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...
原程序如下:
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));不行么??????? 展开
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));不行么??????? 展开
4个回答
展开全部
你的那个程序对初学者来说比较难理解,我帮你改了一下,概念比较清晰,你可以对照一下
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,即频域分辨率
不知道我说清楚没,有不懂的欢迎追问。
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,即频域分辨率
不知道我说清楚没,有不懂的欢迎追问。
更多追问追答
追问
很认真,解答很清晰,我可能有些概念不清楚,比如时域长度是M的序列变换到频域后,频域的横坐标的取值范围是【0,fs】???这样在频域采样后,才能保证频域分辨率为fs/N呀。但是书上怎么说,是在频域的2pi中均匀采样N个点呢???2pi和fs有什么联系???
追答
实际上频谱图是对称的,只有一半频率是有用的。这点你要明白。
我只能告诉你:你的采样频率Fs,可以转化为2*pi,即Fs/N和2*pi/N是等价的变换。对应的横轴分别为0-Fs和0-2*pi。你只要会用就行了。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
其实,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); 只是改变一下频率横轴而已。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询