求大神帮忙改错,MATLAB程序如下function owen() %自编的czt对比fftclear;clc;t=0:0.001:1; h=3*sin(2*pi*120*t)+2*cos(2*pi*280*t); Fs=1000; f1=100; f2=300; m=length(h); w=exp(-1i*2*pi*(f2-f1)/
来源:学生作业帮助网 编辑:作业帮 时间:2024/08/15 11:29:09
![求大神帮忙改错,MATLAB程序如下function owen() %自编的czt对比fftclear;clc;t=0:0.001:1; h=3*sin(2*pi*120*t)+2*cos(2*pi*280*t); Fs=1000; f1=100; f2=300; m=length(h); w=exp(-1i*2*pi*(f2-f1)/](/uploads/image/z/12073590-54-0.jpg?t=%E6%B1%82%E5%A4%A7%E7%A5%9E%E5%B8%AE%E5%BF%99%E6%94%B9%E9%94%99%2CMATLAB%E7%A8%8B%E5%BA%8F%E5%A6%82%E4%B8%8Bfunction+owen%28%29++%25%E8%87%AA%E7%BC%96%E7%9A%84czt%E5%AF%B9%E6%AF%94fftclear%3Bclc%3Bt%3D0%3A0.001%3A1%3B+++h%3D3%2Asin%282%2Api%2A120%2At%29%2B2%2Acos%282%2Api%2A280%2At%29%3B+++Fs%3D1000%3B+++++++++++++f1%3D100%3B++++++++++++++f2%3D300%3B+++++++++++++m%3Dlength%28h%29%3B++++++++w%3Dexp%28-1i%2A2%2Api%2A%28f2-f1%29%2F)
求大神帮忙改错,MATLAB程序如下function owen() %自编的czt对比fftclear;clc;t=0:0.001:1; h=3*sin(2*pi*120*t)+2*cos(2*pi*280*t); Fs=1000; f1=100; f2=300; m=length(h); w=exp(-1i*2*pi*(f2-f1)/
求大神帮忙改错,MATLAB程序如下
function owen() %自编的czt对比fft
clear;clc;
t=0:0.001:1;
h=3*sin(2*pi*120*t)+2*cos(2*pi*280*t);
Fs=1000;
f1=100;
f2=300;
m=length(h);
w=exp(-1i*2*pi*(f2-f1)/(m*Fs));
a=exp(1i*2*pi*f1/Fs);
y=fft(h,m);
z=func_czt(h,m,w,a);
fy=(0:m-1)*Fs/m;
fz=(0:m-1)*(f2-f1)/m+f1;
subplot(2,1,1);
plot(fy,abs(y));
title('fft');
subplot(2,1,2);
plot(fz,abs(z));
title('chirp z') ;
function z = func_czt(h,m,w,a)
len1 = length(h);
nlist = (0 : 1 : len1-1).';
x1 = h .* a.^(-nlist) .* w.^(nlist.^2 / 2);
n1 = 2^nextpow2(len1 + m - 1);
h1 = [w.^(-(0 : 1 : m-1).'.^2/2); zeros(n1 - (m + len1 - 1), 1); w.^(-(-len1+1 : 1 : -1).'.^2/2)];
y1 = ifft(fft(x1, n1) .* fft(h1));
z = y1(1 : 1 : m) .* w.^((0 : 1 : m-1).'.^2 / 2);
程序主要目的是实现function z = func_czt(h,m,w,a)与matlab中的fft对比
求大神帮忙改错,MATLAB程序如下function owen() %自编的czt对比fftclear;clc;t=0:0.001:1; h=3*sin(2*pi*120*t)+2*cos(2*pi*280*t); Fs=1000; f1=100; f2=300; m=length(h); w=exp(-1i*2*pi*(f2-f1)/
fft是宽带分析工具. 频率步长 = fs / m = 1000 / 1001 ≈ 1 Hz
czt是窄带分析工具, 频率步长 = (f2 - f1) / m = (300 - 100) / 1001 ≈ 0.2 Hz
信号主瓣宽度等于 2 / 1 = 2 Hz,
当使用fft时, 频率分辨率太低,在主瓣只采集了两点,
可以把h=3*sin(2*pi*120*t)+2*cos(2*pi*280*t);
改成h=3*sin(2*pi*120.5*t)+2*cos(2*pi*280.5*t);
再看看效果, 可以但到幅度明显与修改之前不同. 失真严重.
而czt 分辨率是0.2Hz, 主瓣采集了10点. 因此幅度始终很准确.
以上用到了频谱分析的一些知识, 希望对你有帮助