问题描述:
谁能帮我解释一下这段matlab程序是什么意思?
这里有一段完整的matlab程序,是用来把某个信号进行FFT的,不过其中有几句不懂,程序如下:
N=256;
f1=0.1;
f2=0.2;
fs=1;
a1=5;a2=3;
w=2*pi/fs;
x=a1*sin(w*f1*(0:N-1))+a2*sin(w*f2*(0:N-1))+rand(1,N);
subplot(3,1,1);
plot(x(1:N/4));
f=-0.5:1/N:0.5-1/N;
X=fft(x);
subplot(3,1,2);
plot(f,fftshift(abs(X)));
这里有三处我不明白:
1.plot(x(1:N/4));
这一句,前面在定义要进行fft变换的序列时已经给出了0:N-1的行向量,怎么又出来个x(1:N/4)?
2.f=-0.5:1/N:0.5-1/N;
这一句,为什么f取的是从-0.5到0.5-1/N?我试了一下,如果改成-0.5到0.5,居然就做不出fft的图来了,是空白的.
3.plot(f,fftshift(abs(X)));
这一句,plot()里面的两个参数,一个是f,一个是fftshift(abs(X)),这两个参数有关联吗?,后者里面没有涉及到f啊,画出的fft的图的横坐标和纵坐标分别是代表什么呢?另外这个fftshift是什么功能?
问题比较多,我是matlab初学者,
这里有一段完整的matlab程序,是用来把某个信号进行FFT的,不过其中有几句不懂,程序如下:
N=256;
f1=0.1;
f2=0.2;
fs=1;
a1=5;a2=3;
w=2*pi/fs;
x=a1*sin(w*f1*(0:N-1))+a2*sin(w*f2*(0:N-1))+rand(1,N);
subplot(3,1,1);
plot(x(1:N/4));
f=-0.5:1/N:0.5-1/N;
X=fft(x);
subplot(3,1,2);
plot(f,fftshift(abs(X)));
这里有三处我不明白:
1.plot(x(1:N/4));
这一句,前面在定义要进行fft变换的序列时已经给出了0:N-1的行向量,怎么又出来个x(1:N/4)?
2.f=-0.5:1/N:0.5-1/N;
这一句,为什么f取的是从-0.5到0.5-1/N?我试了一下,如果改成-0.5到0.5,居然就做不出fft的图来了,是空白的.
3.plot(f,fftshift(abs(X)));
这一句,plot()里面的两个参数,一个是f,一个是fftshift(abs(X)),这两个参数有关联吗?,后者里面没有涉及到f啊,画出的fft的图的横坐标和纵坐标分别是代表什么呢?另外这个fftshift是什么功能?
问题比较多,我是matlab初学者,
问题解答:
我来补答展开全文阅读