用matlab 实现函数的功率谱

函数:y=sin(2*pi*0.2*n)+sin(2*0.213*n)... 函数:y=sin(2*pi*0.2*n)+sin(2*0.213*n) 展开
 我来答
showtime_97
2014-05-03 · TA获得超过4784个赞
知道大有可为答主
回答量:1005
采纳率:90%
帮助的人:822万
展开全部

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]),就行了。

奈落05810
2014-05-28 · TA获得超过181个赞
知道答主
回答量:108
采纳率:0%
帮助的人:101万
展开全部
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);%FFTPyy=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)')

请采纳答案,支持我一下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式