作业帮 > 综合 > 作业

如何设定matlab fft的采样频率?

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/29 11:03:14
如何设定matlab fft的采样频率?
clc
clear
t=0:0.01:200;
y=0.5+0.5*cos(2*pi/32*t+2/3*pi);
%plot(t,y)
N=1024;fs1=100;fs2=1000;n=0:N-1;
Y=fft(y);
f1=n*fs1/N;
mag=abs(Y);
subplot(1,2,1),plot(f1(1:N/2-1),mag(1:N/2-1));
title('当fs为100时');
f2=n*fs2/N;
subplot(1,2,2),plot(f2(1:N/2-1),mag(1:N/2-1));
title('当fs为1000时')


如上面所示,选择采样频率fs=100和1000时,x轴刻度分别为0.5859和5.859,fs大了10倍,有谐波的频率也涨了10倍,按理说f0是多少在横轴频率上不就应该显示多少吗?此处f0=1/32,本人这方面是新手,不知谁能予以解答,
基本概念错误,所以程序本身就是概念模糊,当t=0:0.01:200;时你的采样频率就已经是20001/200hz了,做fft时就是这个采样频率了,你的程序只是是改变了横轴的值,对ft来说根本没有改变采样频率.要想达到你的编程目的应该改变t的值(t=0:0.01:1和t=0:0.001:1),再做两次fft,那么得到的横轴坐标才是准确的真实频率值.
再问: 实际上这个cos只是个探索,我真正要处理的是图像,图像一行原本就有1024个点,相当于已经取样了1024个离散点,那请问fs设置为多少的时候,能得到真实频率值? PS:图像那行的方程就为上面的那个y
再答: 采样定理没学过?“图像一行原本就有1024个点”那么采样频率就是1024hz,就直接做fft或fft2,如果是fft2就没有频率值,如果是fft算下来变换后横轴最高频率就是1024/2=512hz,那么横轴算出的频率值就是准确的频率值了。如果想用低于1024hz的采样频率,例如512hz的采样频率,那么变换后的最高频率就是256hz,你将失去图像中原有的256-512hz的频率的特征。如果想用高于1024hz的采样频率,那是不可能的。因为原始信号已经是离散的数据点,要想得到大于原始数据点就要插值,那么你得到的新信号实际上已经是人为加入了不必要的其它信息信号,可能造成原始图像信号的失真等问题,那么这种做法又有什么意义呢?
再问: 非常感谢,实话是我在这个方面非常小白,还有个问题就是,为啥图像一行1024个点,也就是1024个离散点,采样频率就是1024HZ呢?还请不吝指教
再答: 为了便于你的理解和表述才使用了HZ这个单位,实际上图像是空间问题,通常可以使用类似于频率的波数等物理量,但这涉及到采样时的空间单位(例如m,km等),就不多扯了。通常对于图像中的频率问题,可以认为全部采样点是在一个单位时间内完成的(例如1秒),这样采样频率就是一秒钟采了1024个点,采样频率当然就是1024hz。每个采样间隔相当于半个周期,即每两个间隔是一个周期,那么最大频率就是1024/2=512hz,这就是采样定理的由来。