谁能帮我解释一下这段matlab程序是什么意思?

这里有一段完整的matlab程序,是用来把某个信号进行FFT的,不过其中有几句不懂,谁能帮我解释一下,感谢各位matlab高手啦~~不胜感激啊!!程序如下:N=256;f... 这里有一段完整的matlab程序,是用来把某个信号进行FFT的,不过其中有几句不懂,谁能帮我解释一下,感谢各位matlab高手啦~~不胜感激啊!!程序如下:
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初学者,谢谢大家!!
展开
 我来答
百度网友254b4cd
2008-09-11 · TA获得超过412个赞
知道小有建树答主
回答量:218
采纳率:0%
帮助的人:101万
展开全部
1. plot(x(1:N/4))是作图向量x的第一到第N/4个值
2. f=-0.5:1/N:0.5-1/N; 中-0.5的意思是f的初值,0.5-1/N是f的最后值,1/N则是f没变化一次的增量。例如若N=10,那么f=-0.5:0.1:0.4,其实f就分别取-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4
你用f=-0.5:0.5 则系统会默认增量是1 所以系统不可能运行出来

3. f即是plot作图的横坐标 ,至于fftshift 你在matlab 里运行help fftshift
fftshift函数就是一个交换函数:
交换规则如下:
如:x=[1 2 3 4 5 6 7 8];
y=fftshift(x);
then y=[5 6 7 8 1 2 3 4];

其在fft运算里的物理意义:
把0频(低频)周围的频谱搬移到中频范围(采样频率的一半),只是形象化的展示FT变换后的低频成分(正负频率)。
其实质是把Fs/2的右边频谱平移到Fs/2的左边,把低频平移到Fs/2的右边,各图象间距不变。不知道怎么贴图,放附件了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式