Cappuccinochou 发表于 2015-12-8 10:57

MUSIC方法识别特征频率,如何设置横轴频率与谱峰对应

matlab2014a 利用多重信号分类MUSIC的方法调用pmusic函数来辨识信号中的频率。程序如下:
Fs=8000;   % 采样频率
N=80000;% 数据长度
n=0:N-1;
x=cos(0.257*pi*n)+sin(0.2*pi*n) + 0.01*randn(size(n));
% http://cn.mathworks.com/help/signal/ref/pmusic.html中example
%x=0.23*cos(2*pi*38.6*n)+cos(2*pi*40*n)+0.01*randn(size(n));
figure(1)
plot(n,x)
xlabel('采样数据');ylabel('幅值');title('采样信号时域波形')
figure(2)
pmusic(x,4)
=pmusic(x,4,N,Fs); % =pmusic(x,p,nfft,fs)
k=(0:N/2)*Fs/N;
figure(3)
subplot(211)
plot(F,20*log10(abs(P)))
xlabel('频率 f/HZ');ylabel('幅值');title('MUSIC谱估计')
subplot(212)
plot(k,20*log10(abs(P)))
xlabel('频率 f/HZ');ylabel('幅值');title('MUSIC谱估计')

问题:如何设置横轴使特征频率和谱峰相对应
疑问:1.第一个信号取自pmusic函数的example,跑出的结果能明显看到有两个信号频率,如图1:


但是信号2跑出的结果却看不出有两个明显的信号频率,信号2的仿真结果如图2:

MUSIC方法具有高频率分辨力,为什么信号2的特征频率无法辨识?
2.信号2的仿真结果中0HZ处有明显的谱峰,有什么物理意义?
3.实际采集到的信号中并不清楚信号空间的维数p,请问p一般怎么取值?有什么算法可以确定吗?
希望有这方面经验的朋友指导一下,谢谢。


Cappuccinochou 发表于 2015-12-9 08:50

希望了解的朋友给指点一下谢谢{:{18}:}

Raspberry 发表于 2015-12-9 09:15

你这里的信号1和信号2分别指的是什么信号?

Raspberry 发表于 2015-12-9 09:23

关于维数的确定可以参考我下面摘录的内容



Cappuccinochou 发表于 2015-12-9 14:22

谢谢你的指点。
信号1是help pmusic中的example给出的信号,信号2是根据有关music方法文献中自己编的模拟输入信号。
关于信号源数目估计的AIC准则、MDL准则我再看看。非常感谢。
请问:1.music方法有很高的分辨率,为什么无法识别信号2中的38.6、40HZ信号频率?
         2.怎么样编程使横轴信号频率和纵轴谱峰对应,谱峰处显示实际频率?
希望你可以抽空解答一下,谢谢。

Cappuccinochou 发表于 2015-12-9 14:23

Raspberry 发表于 2015-12-9 09:23
关于维数的确定可以参考我下面摘录的内容

谢谢你的指点。
信号1是help pmusic中的example给出的信号,信号2是根据有关music方法文献中自己编的模拟输入信号。
关于信号源数目估计的AIC准则、MDL准则我再看看。非常感谢。
请问:1.music方法有很高的分辨率,为什么无法识别信号2中的38.6、40HZ信号频率?
         2.怎么样编程使横轴信号频率和纵轴谱峰对应,谱峰处显示实际频率?
希望你可以抽空解答一下,谢谢。

Raspberry 发表于 2015-12-22 10:04

Cappuccinochou 发表于 2015-12-9 14:22
谢谢你的指点。
信号1是help pmusic中的example给出的信号,信号2是根据有关music方法文献中自己编的模拟 ...

N=2048;% 数据长度
Fs=1/2048;   % 采样频率
n=0:N-1;
x=cos(0.257*pi*n)+sin(0.2*pi*n) + 0.01*randn(size(n));
% http://cn.mathworks.com/help/signal/ref/pmusic.html中example
%x=0.23*cos(2*pi*38.6*n)+cos(2*pi*40*n)+0.01*randn(size(n));
figure(1)
plot(n,x)
xlabel('采样数据');ylabel('幅值');title('采样信号时域波形')
figure(2)
pmusic(x,4,N)
=pmusic(x,4,N,Fs); % =pmusic(x,p,nfft,fs)
k=(0:N/2)*Fs*2;
figure(3)
subplot(211)
plot(F,20*log10(abs(P)))
xlabel('频率 f/HZ');ylabel('幅值');title('MUSIC谱估计')
subplot(212)
plot(k,20*log10(abs(P)))
grid on
xlabel('频率 f/HZ');ylabel('幅值');title('MUSIC谱估计')

Raspberry 发表于 2015-12-22 10:05

上面的很坐标单位是(*pirad/s)
如果要用赫兹的话采用k=(0:N/2)*Fs;
页: [1]
查看完整版本: MUSIC方法识别特征频率,如何设置横轴频率与谱峰对应