搜索
bottom↓
回复: 17

理解积化和差公式=傅里叶变换,如此简单实用

[复制链接]

出0入0汤圆

发表于 2023-4-5 21:03:04 | 显示全部楼层 |阅读模式
傅里叶变换折磨了我好久,直到发现这不就是之前三角函数的积化和差公式吗?理解积化和差公式+理解交流信号累加结果为0,傅里叶变换变得如此简单实用。

学习和掌握傅里叶变换,关键是要掌握傅里叶变换结果和原始数据的对应关系,从傅里叶变换结果中获取原始信号的频率、幅度、相位和其他信息。

希望我自己琢磨的这个思路,能帮助大家理解和运用傅里叶变换。

https://www.bilibili.com/video/BV1Ng4y1g7Tj/


阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出95入100汤圆

发表于 2023-4-5 21:23:54 | 显示全部楼层
看不到了,重新发一下链接

出0入98汤圆

发表于 2023-4-5 21:24:10 | 显示全部楼层
你这连接访问不到视频

出0入0汤圆

 楼主| 发表于 2023-4-5 22:00:17 | 显示全部楼层
lhj200304 发表于 2023-4-5 21:23
看不到了,重新发一下链接
(引用自2楼)

谢谢提醒,可能刚刚还在审核。现在可以了。

出0入0汤圆

 楼主| 发表于 2023-4-5 22:00:29 | 显示全部楼层
rclong 发表于 2023-4-5 21:24
你这连接访问不到视频
(引用自3楼)

现在可以了,谢谢!

出0入0汤圆

发表于 2023-4-6 11:29:14 | 显示全部楼层
我就想知道,我得到AD采样一串数组比如buff[32]。
怎么把指定频率比如50Hz的交流分量的幅值提取出来。
怎么把直流分量也提取出来。

出200入2554汤圆

发表于 2023-4-6 15:33:20 | 显示全部楼层
lyl1070 发表于 2023-4-6 11:29
我就想知道,我得到AD采样一串数组比如buff[32]。
怎么把指定频率比如50Hz的交流分量的幅值提取出来。
怎么 ...
(引用自6楼)

按步骤说就是 FFT,然后获得一个 [32] 长度的复数数组。
该复数数组是用 32 个周期依次缩短的 exp(jwt) 与 buff[32] 积分平均所得。

[0] 周期无穷大,对应直流分量

[1] 周期小一些,对应【采样率*1/32】频点的分量

...

[31] 周期最小,对应【采样率*31/32】频点的分量

-----------------------------------------------------------------------------

你要 50Hz 的成份,就要算下当前采样率下,第几个频点对应 50Hz.

出0入0汤圆

 楼主| 发表于 2023-4-6 22:03:21 | 显示全部楼层
lyl1070 发表于 2023-4-6 11:29
我就想知道,我得到AD采样一串数组比如buff[32]。
怎么把指定频率比如50Hz的交流分量的幅值提取出来。
怎么 ...
(引用自6楼)

可以耐心看完我的视频,肯定会有收获。您这个不一定需要傅里叶变换。一些简单的求和运算、三角函数运算就能搞定。

出100入312汤圆

发表于 2023-4-6 23:36:52 来自手机 | 显示全部楼层
学过,不用就搞忘了

出0入0汤圆

发表于 2023-4-7 08:13:37 | 显示全部楼层
看不明白,读书时学过忘记了。还需要哪些基础知识?

出0入0汤圆

发表于 2023-4-10 15:47:50 | 显示全部楼层
点开才发现已经关注楼主了!

出0入0汤圆

 楼主| 发表于 2023-4-10 21:06:46 | 显示全部楼层
maxking 发表于 2023-4-7 08:13
看不明白,读书时学过忘记了。还需要哪些基础知识?
(引用自10楼)

三角函数就行

出0入0汤圆

 楼主| 发表于 2023-4-10 21:06:59 | 显示全部楼层
king风 发表于 2023-4-10 15:47
点开才发现已经关注楼主了!
(引用自11楼)

咱们都是爱学习的人

出0入37汤圆

发表于 2023-4-11 22:54:09 | 显示全部楼层
本帖最后由 下一页 于 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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入37汤圆

发表于 2023-4-11 23:04:14 | 显示全部楼层
lyl1070 发表于 2023-4-6 11:29
我就想知道,我得到AD采样一串数组比如buff[32]。
怎么把指定频率比如50Hz的交流分量的幅值提取出来。
怎么 ...
(引用自6楼)

用和你采用率一样的50hz正弦波数字序列和余弦波数字序列与你采集的信号做乘加,点对点的乘法,乘完了相加,得到两个数,分别对应正弦和余弦分量,求平方和再开根号,就是50HZ的信号幅度,这个两个数相除,再求反切,就是50hz分量的角度。

出0入0汤圆

 楼主| 发表于 2023-4-12 08:07:14 | 显示全部楼层
下一页 发表于 2023-4-11 23:04
用和你采用率一样的50hz正弦波数字序列和余弦波数字序列与你采集的信号做乘加,点对点的乘法,乘完了相加 ...
(引用自15楼)

太厉害。。。了

出0入0汤圆

发表于 2023-4-12 08:38:40 | 显示全部楼层
下一页 发表于 2023-4-11 23:04
用和你采用率一样的50hz正弦波数字序列和余弦波数字序列与你采集的信号做乘加,点对点的乘法,乘完了相加 ...
(引用自15楼)

用和你采用率一样的50hz正弦波数字序列和余弦波数字序列与你采集的信号做乘加,点对点的乘法,乘完了相加,得到两个数,分别对应正弦和余弦分量,求平方和再开根号,就是50HZ的信号幅度,这个两个数相除,再求反切,就是50hz分量的角度。

大神,可以再讲得傻瓜一点吗?让我们这些傻瓜也能写出代码。

出0入37汤圆

发表于 2023-4-12 17:10:12 | 显示全部楼层
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)

回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-20 22:17

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表