作业帮 > 综合 > 作业

用matlab 实现函数的功率谱

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/09 03:48:13
用matlab 实现函数的功率谱
函数:y=sin(2*pi*0.2*n)+sin(2*0.213*n)
n=0:0.1:200;%设定信号时间长度为0到200秒,采样间隔0.1,则采样频率为10HZ,点数2001

y=sin(2*pi*0.2*n)+sin(2*0.213*n);
Y=fft(y);%FFT
Pyy=Y.*conj(Y)/2000;%信号功率谱
f=10*(0:1000)/2000;%计算横轴频率值

figure(1)
subplot(2,1,1),plot(n,y),title('信号'),xlabel('时间(S)')
subplot(2,1,2),plot(f,Pyy(1:1001)),title('信号功率谱'),xlabel('频率(Hz)')


再问: f=10*(0:1000)/2000;%计算横轴频率值
f为什么是这样呢?我不太理解这句话,能解释一下吗?
还有横轴频率能从0到1吗?谢了,给你加分
再答: “f为什么是这样呢?我不太理解这句话,能解释一下吗?”这是所有信号处理基础中的基础,祖宗中的祖宗,实质中的实质——采样定理得到的,即信号中可能的含有的最高频率是采样频率的一半。
fft函数得到2001个信号点的傅立叶系数值,但不能直接得到频率值,也就是说这2001个值并不知道它们表示的是多少频率,频率值是要通过采样定理算的。采样频率是10hz,则最大频率值一定是5,那么横坐标的最后一个点的值是采样频率10×1/2=5,那么从0到5hz有多少个频率值呢?是根据信号一半点数计算的,即最终从0到5hz会有1001个值,这1001个值的最后一个值一定是5,所以f=10*(0:1000)/2000;表达的就是这么个意思,数字游戏罢了。“横轴频率能从0到1吗?”,如果只改变显示范围是很简单的。但实际从原理上讲应改变采样频率才行。偷懒用第一种方法吧,在“title('信号功率谱'),”之前加一语句axis([0,1,0,600]),就行了。
再问: 谢了,我们没怎么学matlab,现在老师又留了作业,自己找书却看不懂