信号的功率谱分析
有没有人用matlab编写过计算信号的功率谱的代码这个题目有点意思,是不想用cpsd,要自己来写吗? 网上、论坛一搜有的是。 impulse 发表于 2014-2-24 15:02
这个题目有点意思,是不想用cpsd,要自己来写吗?
cpsd是求互谱密度的吧。 可以在help里面搜Statistical Signal Processing,matlab提供了很多psd的估计方法。要用间接法的话需要自己编程。 matlab高版本已经没有psd了,cpsd(x,x,...)=psd(x) 听着怎么像作业啊?周期图法也就是两行代码的事情,AR模型或者ESPRIT什么的可能稍微麻烦点,按照书上的公式写就行。 welch法计算功率谱,matlab中函数为:pwelch 这个还需要代码吗。。。。自己写一下,多简单啊,怎么就不肯自己动手吗 自己可以实现编写的。。。 一个简单的程序,可以直接复制粘贴。
测试通过,如下:
sf=100; %采样频率
t=(0:10000)/sf;
x=sin(20*pi*t)+sin(30*pi*t);%模拟信号
nfft=1024;%FFT长度
f=0:sf/nfft:sf/2-sf/nfft; %建立频率向量
w=hanning(nfft); %加窗处理
y=pwelch(x,w,[],nfft,sf,'twosided');%自谱图
n=1:nfft/2;
plot(f(n),y(n));
xlabel('频率(Hz)');
ylabel('功率谱');
zswseu 发表于 2014-3-4 10:40
一个简单的程序,可以直接复制粘贴。
测试通过,如下:
我要处理的是离散信号(测量值) 本帖最后由 zswseu 于 2014-3-5 00:05 编辑
北国之春 发表于 2014-3-4 11:09
我要处理的是离散信号(测量值)
我这个就是离散信号啊,点都是离散的。
你代入离散信号就行了。如果没有输入信号,程序就不能运行了。
sf=100; %采样频率
t=(0:10000)/sf;
x=sin(20*pi*t)+sin(30*pi*t);%模拟信号
nfft=1024;%FFT长度
f=0:sf/nfft:sf/2-sf/nfft; %建立频率向量
w=hanning(nfft); %加窗处理
y=pwelch(x,w,[],nfft,sf,'twosided');%自谱图
n=1:nfft/2;
plot(f(n),y(n));
xlabel('频率(Hz)');
ylabel('功率谱'); 如果简单的,不要求精度的,用matlab自带的函数就可以了,要是专业场合,建议自己编写,也可把数据交给我处理,一次给几元钱
页:
[1]
2