分享

傅里叶级数 三角形式 到 复数形式

 菌心说 2021-03-23

有助理解傅里叶变换的几个图:

三角函数的叠加,如何得到方波:

(时域上观察)


时域特征转换到频域特征:


杂乱的周期波形信号(如语音)可以转换为规则的三角波型号的叠加:


傅里叶变换是把周期函数展开三角级数,即若干个三角函数的和。


欧拉公式:


通过欧拉公式可以将 三角函数形式的 傅里叶变换 转为 复数形式:


上图的公式看起来不简洁,我们借助一些符号代换让上式看起来简单一些:


Cn的求解,我们已经知道an、bn的求解方法为在对应周期上做积分,Cn和an、bn的关系的关系展开可以得到:


归纳一下:


遗留问题:

在matlab中,对一个n个数的数组进行傅里叶变换得到n个复数, 结果是cn,具有能量对称性【c(n)和c(-n)】。


matlab傅里叶变换与逆变换

波形合成:

  1. %合成一个采样率为16Khz的信号波,该波由200,400,600hz的三组波构成。
  2. t=0:1/16000:1;
  3. a = [1, 0.5, 0.6];
  4. b = [0.5, 1, 0.3];
  5. WAV = zeros(10,size(t,2));
  6. for i=1:3
  7. WAV(3*i-2,:) = a(i)*cos(2*pi*i*200*t);
  8. WAV(3*i-1,:) = b(i)*sin(2*pi*i*200*t);
  9. WAV(3*i,:) = WAV(3*i-2,:)+WAV(3*i-1,:);
  10. WAV(10,:) = WAV(10,:)+WAV(3*i,:);
  11. end
  12. %取320个采样点,时间宽度为20ms,展示合成效果
  13. num = 320;
  14. figure,title('波形的合成'); % 图形标题
  15. for i = 1:3
  16. subplot(4,1,i),plot(1:num,WAV(3*i-2,1:num),'b',1:num,WAV(3*i-1,1:num),'g',1:num,WAV(3*i,1:num),'r:');
  17. str1 = ['a',num2str(i),'*cos(2*pi*',num2str(i),'*200*t)'];
  18. str2 = ['b',num2str(i),'*sin(2*pi*',num2str(i),'*200*t)'];
  19. str3 = [str1,'+',str2];
  20. legend(str1,str2,str3);
  21. title([num2str(i*200),'hz分量']),ylabel('振幅');
  22. end
  23. subplot(4,1,4),plot(1:num,WAV(3,1:num),'r:',1:num,WAV(6,1:num),'r:',1:num,WAV(9,1:num),'r:',1:num,WAV(10,1:num),'r');
  24. title('合成的信号波形,200hz+400hz+600hz分量'),ylabel('振幅'),xlabel('x-采样点序号');


傅里叶变换与逆变换参考:

https://wenku.baidu.com/view/06df54757e21af45b307a8b3.html

%% 信号经过傅里叶变换然后进行傅里叶逆变换后信号的变化
clear all;clc;
%------Author&Date------
%Author:   
%Date:     2013/07/31
%==========================================================================       
Fs=8e3;             %采样率
t=0:1/Fs:1;         %采样点
len=length(t);      %采样长度
f1=10;              %频率1
f2=20;             %频率2
f3=40;            %频率3
A1=4;               %幅度1
A2=2;             %幅度2
A3=1;             %幅度3
MaxS=A1+A2+A3;      %信号幅度的最大值
signal=A1*sin(2*pi*f1*t)+A2*sin(2*pi*f2*t)+A3*sin(2*pi*f3*t);
X=fft(signal,len);  %傅里叶变换
magX=abs(X);        %信号的幅度
angX=angle(X);      %信号的相位
Y=magX.*exp(1i*angX);   %信号的频域表示
y=ifft(Y,len);          %信号进行傅里叶逆变换
y=real(y);
er=signal-y;            %原始信号和还原信号的误差
subplot(311);plot(t,signal);axis([0 1 -MaxS MaxS]);xlabel('时间');ylabel('振幅');title('原始信号');
subplot(312);plot(t,y);axis([0 1 -MaxS MaxS]);xlabel('时间');ylabel('振幅');title('还原信号');
subplot(313);plot(t,er);xlabel('时间');ylabel('振幅');title('误差');
% End Script


傅里叶深入理解参考:

http://blog./70549/

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多