matlab求fft的图形时,f=(0:length(y)-1)'*119/length(y);是什么意思?原程序如下:t=0:1/119:1;x=5*sin(2*pi*20*t)+3*sin(2*pi*30*t);y=fft(x);m=abs(y);f=(0:length(y)-1)'*119/length(y); ---------------------->这一句不懂.plot(f,m);画频谱

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/07 02:51:40
matlab求fft的图形时,f=(0:length(y)-1)'*119/length(y);是什么意思?原程序如下:t=0:1/119:1;x=5*sin(2*pi*20*t)+3*sin(2*pi*30*t);y=fft(x);m=abs(y);f=(0:length(y)-1)'*119/length(y); ---------------------->这一句不懂.plot(f,m);画频谱

matlab求fft的图形时,f=(0:length(y)-1)'*119/length(y);是什么意思?原程序如下:t=0:1/119:1;x=5*sin(2*pi*20*t)+3*sin(2*pi*30*t);y=fft(x);m=abs(y);f=(0:length(y)-1)'*119/length(y); ---------------------->这一句不懂.plot(f,m);画频谱
matlab求fft的图形时,f=(0:length(y)-1)'*119/length(y);是什么意思?
原程序如下:
t=0:1/119:1;
x=5*sin(2*pi*20*t)+3*sin(2*pi*30*t);
y=fft(x);
m=abs(y);
f=(0:length(y)-1)'*119/length(y); ---------------------->这一句不懂.
plot(f,m);
画频谱图,直接plot(fft(x));不行么?

matlab求fft的图形时,f=(0:length(y)-1)'*119/length(y);是什么意思?原程序如下:t=0:1/119:1;x=5*sin(2*pi*20*t)+3*sin(2*pi*30*t);y=fft(x);m=abs(y);f=(0:length(y)-1)'*119/length(y); ---------------------->这一句不懂.plot(f,m);画频谱
你的那个程序对初学者来说比较难理解,我帮你改了一下,概念比较清晰,你可以对照一下
Fs=128;%%采样频率
N=512;%%采样点数
dt=1/Fs;%%时域最小间隔,即时域分辨率
t=(0:N-1)*dt;%%采样时间长度
df=Fs/N;%%频域最小间隔,即频域分辨率
f=(-N/2+1:N/2)*df;
x=5*sin(2*pi*20*t)+3*sin(2*pi*30*t);
y=fft(x);
Y=fftshift(y);
A=abs(Y);
A=A/(N/2);%%还原真实幅值
figure(1)
subplot(121)
plot(t,x)
xlabel('时间t')
ylabel('幅值x')
grid on
subplot(122)
plot(f,A)
xlabel('频率f')
ylabel('幅值A')
grid on
对比上面那个程序,可以知道dt=1/Fs=1/119,故你的采样频率为119Hz,采样点数为120
df=Fs/N;%%频域最小间隔,即频域分辨率
f=(-N/2+1:N/2)*df;
对比上面可知,你的119/length(y)=119/120=df,即频域分辨率
不知道我说清楚没,有不懂的欢迎追问.

其实,plot(t,abs(y))也能画出频谱图,但是不能用fft(x)画频谱,不太正规来说。fft(x)快速傅里叶算出的是一组复数,带有i虚部。你是画不出来的。而傅里叶变换算出的复数平方,才反应频率叠加的概念。至于f=(0:length(y)-1)'*119/length(y); 只是改变一下频率横轴而已。...

全部展开

其实,plot(t,abs(y))也能画出频谱图,但是不能用fft(x)画频谱,不太正规来说。fft(x)快速傅里叶算出的是一组复数,带有i虚部。你是画不出来的。而傅里叶变换算出的复数平方,才反应频率叠加的概念。至于f=(0:length(y)-1)'*119/length(y); 只是改变一下频率横轴而已。

收起

f=(0:length(y)-1)'*119/length(y);作用是频率转换,如果直接plot(fft(x))就不能看到这个波形是由有哪几个固有频率的简谐波重叠而成的,通常需要进行频率转换。

plot(t,abs(y))也能画出频谱图,但是不能用fft(x)画频谱,不太正规来说。fft(x)快速傅里叶算出的是一组复数,带有i虚部。你是画不出来的。而傅里叶变换算出的复数平方,才反应频率叠加的概念。至于f=(0:length(y)-1)'*119/length(y); 只是改变一下频率横轴而已。...

全部展开

plot(t,abs(y))也能画出频谱图,但是不能用fft(x)画频谱,不太正规来说。fft(x)快速傅里叶算出的是一组复数,带有i虚部。你是画不出来的。而傅里叶变换算出的复数平方,才反应频率叠加的概念。至于f=(0:length(y)-1)'*119/length(y); 只是改变一下频率横轴而已。

收起