理解积化和差公式=傅里叶变换,如此简单实用
傅里叶变换折磨了我好久,直到发现这不就是之前三角函数的积化和差公式吗?理解积化和差公式+理解交流信号累加结果为0,傅里叶变换变得如此简单实用。学习和掌握傅里叶变换,关键是要掌握傅里叶变换结果和原始数据的对应关系,从傅里叶变换结果中获取原始信号的频率、幅度、相位和其他信息。
希望我自己琢磨的这个思路,能帮助大家理解和运用傅里叶变换。
https://www.bilibili.com/video/BV1Ng4y1g7Tj/
看不到了,重新发一下链接 你这连接访问不到视频 lhj200304 发表于 2023-4-5 21:23
看不到了,重新发一下链接
(引用自2楼)
谢谢提醒,可能刚刚还在审核。现在可以了。 rclong 发表于 2023-4-5 21:24
你这连接访问不到视频
(引用自3楼)
现在可以了,谢谢! 我就想知道,我得到AD采样一串数组比如buff。
怎么把指定频率比如50Hz的交流分量的幅值提取出来。
怎么把直流分量也提取出来。
lyl1070 发表于 2023-4-6 11:29
我就想知道,我得到AD采样一串数组比如buff。
怎么把指定频率比如50Hz的交流分量的幅值提取出来。
怎么 ...
(引用自6楼)
按步骤说就是 FFT,然后获得一个 长度的复数数组。
该复数数组是用 32 个周期依次缩短的 exp(jwt) 与 buff 积分平均所得。
周期无穷大,对应直流分量
周期小一些,对应【采样率*1/32】频点的分量
...
周期最小,对应【采样率*31/32】频点的分量
-----------------------------------------------------------------------------
你要 50Hz 的成份,就要算下当前采样率下,第几个频点对应 50Hz. lyl1070 发表于 2023-4-6 11:29
我就想知道,我得到AD采样一串数组比如buff。
怎么把指定频率比如50Hz的交流分量的幅值提取出来。
怎么 ...
(引用自6楼)
可以耐心看完我的视频,肯定会有收获。您这个不一定需要傅里叶变换。一些简单的求和运算、三角函数运算就能搞定。 学过,不用就搞忘了 看不明白,读书时学过忘记了。还需要哪些基础知识? 点开才发现已经关注楼主了!
maxking 发表于 2023-4-7 08:13
看不明白,读书时学过忘记了。还需要哪些基础知识?
(引用自10楼)
三角函数就行 king风 发表于 2023-4-10 15:47
点开才发现已经关注楼主了!
(引用自11楼)
咱们都是爱学习的人 本帖最后由 下一页 于 2023-4-11 23:00 编辑
两个信号相乘,就是线性代数里的点积,点积的物理意义是两个向量的相关性,傅里叶变换本身的目的是用正弦波去在信号中找跟自己有关的部分,表现出来的是正弦波×正弦波,也就是楼主说的积化和差。
下面的程序是用MATLAB展示傅里叶变换的本质,就是挨个用各种频率的正弦波和余弦波(两个信号正交)去和信号做乘法(积化和差),乘法的结果是原始信号在这个频率下的信号幅度是多少,分别是实部和虚部。
Fs = 5000;
T = 1/Fs;
L = 1024; %取样点数
t = (0:L-1)*T;
S =pi* (sin(2*pi*50*t)+0.33*sin(2*pi*150*t) + 0.2*sin(2*pi*250*t)+0.13*sin(2*pi*350*t)+0.11*sin(2*pi*450*t))/4;%目标信号
%S=sin(2*pi*50*t)
subplot(411);
plot(t,S,'r')
xlabel('时间轴')
ylabel('电压轴')
title('时域图像')
S1=0+1.5*S+0.5*rand(1,L);%加了噪声的目标信号,这个应该是采集来的信号。
hold on%表示不改变原有图像,将 在原有图像基础上绘制新图像
plot(t,S1,'b')%增加横坐标t,否则坐标显示是1-n,这样显示是每个时间点
grid on%打开网格
r=zeros(1,L/2+1);%L个取样点,分辨出来的频率是L/2+1
x=zeros(1,L/2+1);
for f=1:1:L/2+1
SIN1=sin(2*pi*(f)*t);%对应频率的正弦
COS1=cos(2*pi*(f)*t);%对应频率的余弦
r(f)=abs(dot(SIN1,S1)/(L/2));%与正弦相关性之后是结果的实部,因为相关性是很多个点的累加和,所以要除以点数。
x(f)= abs(dot(COS1,S1)/(L/2));%与余弦相关性之后是结果的虚部。
end
subplot(412);
plot(r,'b:','linewidth',1.5)
xlabel('频率轴')
ylabel('电压轴')
title('正弦波的频域图像')
grid on
subplot(413);
plot(x,'r--','linewidth',0.5)
xlabel('频率轴')
ylabel('电压轴')
title('余弦波的频域图像')
grid on
c=complex(r,x);
fudu=sqrt(x.*x+r.*r);%分析出来原始信号的幅度
subplot(414);
xlabel('频率轴')
ylabel('电压轴')
title('频域图像')
plot(fudu,'k','linewidth',1.5)
grid on
axis auto
lyl1070 发表于 2023-4-6 11:29
我就想知道,我得到AD采样一串数组比如buff。
怎么把指定频率比如50Hz的交流分量的幅值提取出来。
怎么 ...
(引用自6楼)
用和你采用率一样的50hz正弦波数字序列和余弦波数字序列与你采集的信号做乘加,点对点的乘法,乘完了相加,得到两个数,分别对应正弦和余弦分量,求平方和再开根号,就是50HZ的信号幅度,这个两个数相除,再求反切,就是50hz分量的角度。 下一页 发表于 2023-4-11 23:04
用和你采用率一样的50hz正弦波数字序列和余弦波数字序列与你采集的信号做乘加,点对点的乘法,乘完了相加 ...
(引用自15楼)
太厉害。。。了 下一页 发表于 2023-4-11 23:04
用和你采用率一样的50hz正弦波数字序列和余弦波数字序列与你采集的信号做乘加,点对点的乘法,乘完了相加 ...
(引用自15楼)
用和你采用率一样的50hz正弦波数字序列和余弦波数字序列与你采集的信号做乘加,点对点的乘法,乘完了相加,得到两个数,分别对应正弦和余弦分量,求平方和再开根号,就是50HZ的信号幅度,这个两个数相除,再求反切,就是50hz分量的角度。
大神,可以再讲得傻瓜一点吗?让我们这些傻瓜也能写出代码。
lyl1070 发表于 2023-4-12 08:38
用和你采用率一样的50hz正弦波数字序列和余弦波数字序列与你采集的信号做乘加,点对点的乘法,乘完了相加 ...
(引用自17楼)
你的信号是u1,u2,u3,u4-----un,
然后构建一个和你这个信号采样率一样的50hz信号的正弦和余弦,
下面这个是matlab的代码
Fs=10000;%采样率
T = 1/Fs;% 采样时间间隔
L = 1024; %一共采集多少个点
t = (0:L-1)*T; %每个点对应的时间
f=50 %信号频率
s = sin(2*pi*f*t) ;%你创建的正弦
c=cos(2*pi*f*t) ;%你创建的余弦
这个s和c是点数和你采集到的点数相同,采样率相同的数字序列。
然后S=(s1*u1+s2*u2+s3*u3......)/L
C=c1*u1+c2*u2+c3*u3.....)/L
这个S是你的信号中50HZ的正弦分量,C是50HZ的余弦分量,
50hz信号幅度是sqrt(C*C+S*S)
50hz的相位是arctan(S/C)
页:
[1]