⑴ matlab编程问题:ARMA和MUSIC
主要问题包括:
1、变量x未定义。
2、函数MUSIC里面:
S=[S(257:512)S(1:256)];
应为
S=[S(257:512)S(1:256)];
另外,clearR未定义,不知道干什么用的,可以直接删掉。
3、函数ARMA里面,调用的Burg未定义。
⑵ 帮我这个Matlab的MUSIC算法程序怎么改才能运行
clear
m=sqrt(-1);
delta=0.101043;
a1=-0.850848;
sample=32; %number of sample spot
p=10; %number of sample spot in coef method;
f1=0.05; f2=0.40; f3=0.42;
fstep=0.01;
fstart=-0.5;
fend=0.5;
f=fstart:fstep:fend;
nfft=(fend-fstart)/fstep+1;
%un=urn+juin
urn= normrnd(0,delta/2,1,sample);
uin= normrnd(0,delta/2,1,sample);
un=urn+m*uin;
%计算 zn
for n=1:sample-1
zn(1)=un(1);
zn(n+1)=-a1*zn(n)+un(n+1);
end
%计算 xn
for n=1:sample
xn(n)=2*cos(2*pi*f1*(n-1))+2*cos(2*pi*f2*(n-1))+2*cos(2*pi*f3*(n-1))+sqrt(2)*real(zn(n));
end
x=xn';
for k=0:1:sample-1
s=0;
for n=1:sample-k,
s=s+conj(x(1,n))*x(1,n+k); %calculate the value of rxx
end
rxx(1,k+1)=(1/sample)*s;
end
Rx=zeros(sample,sample);
Rx=toeplitz(rxx(1,1:32));
[U,S,V]=svd(Rx);
Pmusicf=zeros(1,1/fstep+1);
ei=zeros(1,sample);
for i=1:length(f)
for j=1:sample
ei(1,j)=exp(-2*pi*(j-1)*f(i)*m);
end;
sum=0;
for k=7:sample
sum=sum+abs(ei*V(:,k))^2;
end
Pmusicf(1,i)=10*log10(1/sum);
end
figure
plot(f,Pmusicf);
title('人工计算music算法');
pp=6;
x=xn';
M=length(x);
rxx=xcorr(x,'biased');
rxx=[rxx(M:end),0];
R=toeplitz(rxx,rxx);
Rxx=R(1:M,1:M);
Rxy=R(1:M,2:end);
[U,S,V]=svd(Rxx);
U1=U(:,1:pp);
S1=S(1:pp,1:pp);
V1=V';
V1=V1(1:pp,:);
A=U1.'*Rxy*V1.';
d=eig(S1,A);
y=angle(d)/2/pi;
figure
stem(y,ones(1,length(y)));
title('人工计算esprit算法');
f=-0.5:0.001:0.5;
j=sqrt(-1);
for n=1:1001
ff(n)=0;
for k=1:length(xn)
ff(n)=xn(k)*exp(-j*2*pi*n*k/1001)+ ff(n);
end
ff(n)=abs( ff(n)).^2/(length(xn));
end
ff=10*log10(ff);
figure
plot(f,ff)
⑶ music算法的详细内容
MUSIC算法是空间谱估计测向理论的重要基石。算法原理 如下:
(1) 不管测向天线阵列形状如何,也不管入射来波入射角的维数如何,假定阵列由M个阵元组成,则阵列输出模型的矩阵形式都可以表示为:Y(t)=AX(t)+N(t)
其中,Y是观测到的阵列输出数据复向量;X是未知的空间信号复向量;N是阵列输出向量中的加性噪声;A是阵列的方向矩阵;此处,A矩阵表达式由图册表示。
MUSIC算法的处理任务就是设法估计出入射到阵列的空间信号的个数D以及空间信号源的强度及其来波方向。
(2) 在实际处理中,Y得到的数据是有限时间段内的有限次数的样本(也称快拍或快摄),在这段时间内,假定来波方向不发生变化,且噪声为与信号不相关的白噪声,则定义阵列输出信号的二阶矩:Ry。
(3) MUSIC算法的核心就是对Ry进行特征值分解,利用特征向量构建两个正交的子空间,即信号子空间和噪声子空间。对Ry进行特征分解,即是使得图册中的公式成立。
(4) U是非负定的厄米特矩阵,所以特征分解得到的特征值均为非负实数,有D个大的特征值和M-D个小的特征值,大特征值对应的特征向量组成的空间Us为信号子空间,小特征值对应的特征向量组成的空间Un为噪声子空间。
(5) 将噪声特征向量作为列向量,组成噪声特征矩阵 ,并张成M-D维的噪声子空间Un,噪声子空间与信号子空间正交。而Us的列空间向量恰与信号子空间重合,所以Us的列向量与噪声子空间也是正交的,由此,可以构造空间谱函数。
(6) 在空间谱域求取谱函数最大值,其谱峰对应的角度即是来波方向角的估计值。
⑷ 空间谱分析的MUSIC算法的MATLAB程序
这么专业的问题还是去专业的论坛看看吧.
⑸ matlab 循环程序的问题
改了点东西,你看你是不是这个意思?
clear all;
clc;
%初始数据
sensor_number=5; %阵元数
N_x=1024; %快拍数
f=8*10^9; %信号频率
l=3*10^8/f; %波长
d=0.5*l; %阵元间距
snr=20;
snr1=10.^(snr/20); %信噪比
theta=[0 20 40]; %信号角度
rtheta=theta*pi/180;
ll=length(theta);
%生成信号
for m=1:sensor_number;
for n=1:ll;
A(m,n)=exp(-1i*2*pi*(m-1)*d*sin(rtheta(n))/l);
end
end
%解析信号虚部是实部的希尔伯特变换,采用复信号的表示方法,模拟入射信号
for m=1:ll;
for n=1:N_x;
p1=rand(1,1);
p2=rand(1,1);
sr(m,n)=sqrt(-2*snr1*snr1*log(p1))*cos(2*pi*p2);
si(m,n)=sqrt(-2*snr1*snr1*log(p1))*sin(2*pi*p2);
s(m,n)=sr(m,n)+1i*si(m,n);
end
end
%高斯白噪声
for m=1:sensor_number;
for n=1:N_x;
p3=rand(1,1);
p4=rand(1,1);
wr(m,n)=sqrt(-2*log(p3))*cos(2*pi*p4);
wi(m,n)=sqrt(-2*log(p3))*sin(2*pi*p4);
w(m,n)=wr(m,n)+1i*wi(m,n);
end
end
x=A*s+w;
%构造协方差矩阵,特征分解
C2=x*x'/N_x;
M=m;
C33=zeros(M,M);
%for j=1:M
%for i=1:M-j+1
%C33(i,i+j-1)=C2(1,j);
% end
%end
%for j=2:M
%for i=1:M-j+1
%C33(i+j-1,i)=conj(C2(1,j));
%end
%end
C3=zeros(M,M);
for i=1:M
C3(i,i)=C2(1,1);
end
for i=1:M-1
C3(i,i+1)=C2(1,2);
end
for i=1:M-1
C3(i+1,i)=conj(C2(1,2));
end
for i=1:M-2
C3(i,i+2)=C2(1,3);
end
for i=1:M-2
C3(i+2,i)=conj(C2(1,3));
end
for i=1:M-3
C3(i,i+3)=C2(1,4);
end
for i=1:M-3
C3(i+3,i)=conj(C2(1,4));
end
for i=1:M-4
C3(i,i+4)=C2(1,5);
end
for i=1:M-4
C3(i+4,i)=conj(C2(1,5));
end
[V D]=eig(C3);
[lambda index]=sort(diag(D),'descend');
lambda=lambda';
%AIC准则判断信源数
for k=0:sensor_number-1
temp0=sum(lambda(k+1:sensor_number))/(sensor_number-k);
temp1=prod(lambda(k+1:sensor_number))^(1/(sensor_number-k));
Lambda=temp0/temp1;
AIC(k+1)=2*N_x*(sensor_number-k)*log(Lambda)+2*k*(2*sensor_number-k);
end
[aic_min b]=min(AIC);
num=b-1;%估计出的信源数
disp('source_number=');
disp(num);
%噪声子空间
Un=V(:,index(num+1:sensor_number));
Gn=Un*Un';
%谱峰搜索
searching_doa=-90:0.1:90;
for i=1:length(searching_doa)
a_theta=exp(-1i*(0:sensor_number-1)'*2*pi*d*sin(pi*searching_doa(i)/180)/l);
Pmusic(i)=1./abs((a_theta)'*Gn*a_theta);
end
plot(searching_doa,10*log10(Pmusic),'r');
xlabel('入射角/degree');
ylabel('空间谱/dB');
legend('Music Spectrum');
title('经典MUSIC估计');
grid on;
⑹ 空间谱估计均匀线阵music算法matlab程序 急求!!!!!!
先用特征值分解估计出信号个数,
然后MUSIC算法中找出对应信号或信号噪声的特征向量,建立子空间。
S'*En*En'*S, 找最小值,谱搜索就好了。S是array manifold,En是噪声的特征向量。
函数照这个格式编就行 function output=MUSIC(array,Rxx,M)
array是线阵坐标矩阵,Rxx是接收数据的二阶统计量,M是信号个数。
自己编吧,不难。。
⑺ 在matlab中用pmusic进行谐波频谱分析,做出来的图发现横轴是归一化的频率,纵轴是分贝。
t = 0:1:2000;
x=40*cos(2*pi*50*t+5*pi/180)+3*cos(2*pi*3*50*t+10*pi/180)+5*cos(2*pi*5*50*t+30*pi/180)+4*cos(2*pi*7*50*t+60*pi/180)+2*cos(2*pi*9*50*t+100*pi/180)+4*cos(2*pi*68.8*t+80*pi/180);
x=x+4*randn(1,length(t));
pmusic(x,10)
哈哈
我不会
⑻ 关于均衡器的matlab算法
data应该就是语音不同频段上的分量
原理简单的说就是读取存入的录音,fft变换。fft是根据采样点数来的,因为要在频谱上处理,所以要转换。data的那一段就是干这个的。获得频谱分量后,就可以根据均衡器的输入,乱来了
⑼ 请问用matlab做数据处理,需要数据加窗函数的music算法怎么做,出图是功率谱的
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)')
⑽ 关于DOA的MUSIC算法 编程
难呀···