作业帮 > 综合 > 作业

MATLAB求sin函数的FFT变换,频域曲线横坐标编程为n=0:length(y)-1;f=fs*n/length(y

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/28 16:34:30
MATLAB求sin函数的FFT变换,频域曲线横坐标编程为n=0:length(y)-1;f=fs*n/length(y); 怎么理解
length(y)是总的采样点数
fs是采样频率,就是频域横轴的最大值.
那么频域上的刻度,就是df=fs/length(y)
从0到fs取n个点,那么就有n-1个区间,就是数列的项的问题,你推推看吧.
f(kk)=(kk-1)*df+0,kk=0:length(y)-1
第kk个点取得值就是kk*df,就是你上面写的n*fs/length(y)
再问: f=fs*n/length(y); 再解释一下呗,不太明白,谢谢了
再答: 不知道你是做实验还是纯是理论玩玩 如果是工科,就是信号在采集的时候你要有个采样频率,就是你每秒钟记录多少个点,就是Hz的那个意思啦。 如果是理科的,那么就是你时域x轴上有个dx的取值吧,这两个有个关系。fs*dt=1。工科做实验可以先确定fs,再算dt。那么理科研究函数就是先在时域上弄个dt,那么频域的fs就直接算出来了。 两个出发点不同,有那个关系就无所谓了。 这个估计你有了x的划分就有了dt了,fs自然就取到了
再问: 我工科做课设,fs已知了,为什么要*n再/length(y)
再答: 那个n就是一个变量,主要是遍历f轴每个点,你按第n个点这么理解比较好。 按顺序数的点,还要有个值,那么这个值就是第n个点乘以df df就是频域分辨率,就是fs/length(y) 这样n*fs/length(y)的意思就是求f轴每个点的值。 因为你画图的时候要给f轴值,不然就是直接的自然顺序了1,2,3....
再问: 明白了,还想问一下MATLAB编程里直接fft(x,y)是属于运用了库函数吧,如果用式子表示出这种变换怎么编句子
再答: 这个问题就比较恐怖了,我到现在也不会写出来。其实fft就是dft的快速算法。如果你不在乎效率,直接用dft算就可以了。不过会遇到存储什么的问题。 想知道怎么编的话,就只能看数值计算方法了。 还有就是这个要用到循环语句,所以用matlab编出来效率也打折了。一般如果你想做工程的话,都是C编函数,再调用吧。 如果你对计算数学感兴趣,有空可以一起研究研究。