• 大小: 45KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-16
  • 语言: Matlab
  • 标签: ifft  fft  matlab  fourier  

资源简介

基于我上一篇关于fft的讲解,现在更加深入解析ifft和fft的组合应用和参数特性,让你将信号在时域频域之间轻松自由地快速正确变换,同时根据需要调整变换的结果。

资源截图

代码片段和文件信息

%这个程序用于初步测试ifft的正确性
clear all;
clc;
Fs = 1e3;   %这是原始时域信号x的采样频率
multiple=0; %x进行fft前的补零倍数,可以增加频率分辨率,也会影响信号频域值
time=10;

t = 0:1/Fs:time-1/Fs;  %这个会影响x的采样点数,当然点数越多,频域越精确越平滑
%x = 1.5*cos(2*pi*100*t)+3*sin(2*pi*202.5*t)+2*sin(2*pi*1450*t);
x = 1.5*cos(2*pi*100*t)+3*sin(2*pi*200*t);
%x = 1.5*cos(2*pi*100*t)+3*sin(2*pi*200*t)+2*cos(2*pi*0.1*t);
%频率最小分辨率————————————————
x=[xzeros(1length(x)*multiple)];  
freqres = Fs/length(x); 
%变换运算获得正确频谱图——————————————
xdft = fft(x); 

xdft2 = xdft(1:length(x)/2+1);
xdft2 = 1/length(x).*xdft2;
xdft2(2:end-1) = (1+multiple)*2*xdft2(2:end-1);
freq = 0:Fs/length(x):Fs/2;
plot(freqabs(xdft2));
%利用频谱图恢复原来的fft图———————————
xdft3=xdft2;

xdft3(2:end-1)=xdft2(2:end-1)./2;
xdft3=xdft3.*length(x);
for j=length(x)/2+2:length(x)
xdft3(j)=conj(xdft3(length(x)-j+2));
end
error2=xdft3-xdft; %原来的fft图与恢复后的fft图的误差

subplot(411);plot(real(xdft));title(‘最初的fft图实部‘);
subplot(412);plot(real(xdft3));title(‘恢复后的fft图实部‘);
subplot(413);plot(imag(xdft));title(‘最初的fft图虚部‘);
subplot(414);plot(imag(xdft3));title(‘恢复后的fft图虚部‘);
%现在利用恢复的fft图进行ifft反变换————————
back=ifft(xdft3);
error=x-back;  %测量恢复的时域信号与原来的时域信号的误差
min(error)  
max(error)  %输出误差的最大值

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件       47083  2015-05-23 10:45  ifft和fft组合应用\MATLAB中ifft函数用法、性质、特性,以及与fft的组合应用全面深入解析(含程序).docx
     文件        1454  2015-05-25 15:06  ifft和fft组合应用\ifft_example1.m
     文件        2154  2015-05-25 15:06  ifft和fft组合应用\ifft_example2.m
     目录           0  2015-05-25 15:07  ifft和fft组合应用\

评论

共有 条评论