来一段matlab代码,利用music算法估计功率谱
时间: 2023-11-24 10:06:32 浏览: 47
好的,请看下面的代码:
```matlab
clear all; clc;
% 信号参数设置
fs = 1000; % 采样频率
f0 = 50; % 正弦波频率
N = 1000; % 信号长度
n = 0:N-1;
A = 1; % 正弦波振幅
% 生成信号
s = A*sin(2*pi*f0*n/fs);
% 添加白噪声
SNR = 10; % 信噪比
noise = randn(1,N);
Psignal = sum(s.^2)/N; % 信号功率
Pnoise = sum(noise.^2)/N; % 噪声功率
noise = noise/sqrt(Pnoise)*sqrt(Psignal/10^(SNR/10));
x = s + noise;
% MUSIC算法估计功率谱
M = 4; % 阵元数
d = 0.5; % 阵元间距
theta = 0:0.5:180; % 角度扫描范围
theta = theta/180*pi;
Pmusic = zeros(1,length(theta));
for k = 1:length(theta)
a = exp(-1j*2*pi*d*sin(theta(k))*(0:M-1)');
Pmusic(k) = 1/(a'*(pinv(x*x')*a));
end
% 画图
figure;
plot(theta/pi*180,10*log10(abs(Pmusic)/max(abs(Pmusic))));
xlabel('Angle (degree)');
ylabel('Power spectrum (dB)');
title('MUSIC algorithm power spectrum');
```
这段代码实现了生成一个正弦波信号,加入一定信噪比的噪声,然后利用MUSIC算法估计信号的功率谱。