是这样的,如果你再程序开始添加holdon这个的画,表示这之后的每一次作图都保留以前的图,这样就可以连续画图了
反之holdoff,表示打开这个之后,每次画图,删除以前的图,
你这里有两个程序,第二个程序与第一个实质上是一样的,区别就是信号与导向矢量的写法有点不同,这里我就不注释了。还有,我下面附了一段我自己的写的程序,里面有SIM算法。G-S正交化算法等。是基于圆阵形式的,你的算法是基于线阵的,他们程序上的区别在于导向矢量的不同。我的算法是某项目中的,保证好使。建议学习波束形成技术,注意把程序分块,例如分成,求导向矢量;最优权值;形成波束等等。
程序如下:
4单元均匀线阵自适应波束形成图
clear
clc
format long;
v=1;
M=4;
N=1000;%%%%%%%快拍数
f0=2110^3;%%%%%%%%%%%信号与干扰的频率
f1=1110^3;
f2=1510^3;
omiga0=2pif0;%%%%%%%信号与干扰的角频率
omiga1=2pif1;
omiga2=2pif2;
sita0=08; %信号方向
sita1=04; %干扰方向1
sita2=21; %干扰方向2
for t=1:N %%%%%%%%%%%%信号
adt(t)=sin(omiga0t/(Nf0));
a1t(t)=sin(omiga1t/(Nf1));
a2t(t)=sin(omiga2t/(Nf2));
end
for i=1:M %%%%%%%%%%%%信号的导向矢量:线阵的形式
ad(i,1)=exp(j(i-1)pisin(sita0));
a1(i,1)=exp(j(i-1)pisin(sita1));
a2(i,1)=exp(j(i-1)pisin(sita2));
end
R=zeros(M,M);
for t=1:N
x=adt(t)ad+a1t(t)a1+a2t(t)a2; %阵列对信号的完整响应
R=R+xx';%信号的协方差矩阵
end
R=R/N;%%%%%%%%%协方差矩阵,所有快拍数的平均
miu=1/(ad'inv(R)ad);%%%%%%这个貌似是LMS算法的公式,具体我记不太清,这里是求最优权值,根据这个公式求出,然后加权
w=miuinv(R)ad;
%%%%%%形成波束%%%%%%%%%%%%%%%%%%%
for sita=0:pi/100:pi
for i=1:M
x_(i,1)=exp(j(i-1)pisin(sita));
end
y(1,v)=w'x_;%%%%%%%对信号进行加权,消除干扰
v=v+1;
end
y_max=max(y(:));%%%%%%%%%%%%%%%归一化
y_1=y/y_max;
y_db=20log(y_1);
sita=0:pi/100:pi;
plot(sita,y)
Xlabel(‘sitaa’)
Ylabel(‘天线增益db’)
4单元均匀线阵自适应波束形成
目标
clear
clc
format long;
v=1;
M=4;阵元数
N=100;
f0=2110^3;
omiga0=2pif0;
sita0=06;%信号方向
for t=1:N
adt(t)=sin(omiga0t/(Nf0));
end
for i=1:M
ad(i,1)=exp(j(i-1)pisin(sita0));
end
R=zeros(4,4);
r=zeros(4,1);
for t=1:N
x=adt(t)ad;
R=R+xx';
end
R=R/N;
miu=1/(ad'inv(R)ad);
w=miuinv(R)ad;
for sita=0:pi/100:pi/2
for i=1:M
a(i,1)=exp(j(i-1)pisin(sita));
end
y(1,v)=w'a;
v=v+1;
end
sita=0:pi/100:pi/2;
plot(sita,y)
xlabel('sita')
ylabel('天线增益’)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%我的程序%%%%%%%%%%%%%%%
function jieshousignal
%期望信号数:1个
%干扰信号数:4个
%信噪比已知
%干燥比已知
%方位角已知
clc;
clear all;
close all;
%//参数设置===========================================
1=0;
2=0;
3=0;
% for rrr=1:16000
signal_num=1; %signal number
noise_num=5; %interference number
R0=06; %圆的半径
SP=2000; %Sample number
N=8; %阵元数
snr=-10; %Signal-to-Noise
sir1=10; %Signal-to-Interference one
sir2=10; %Signal-to-Interference two
sir3=10; %Signal-to-Interf
sir4=10;
sir5=10;
%//================noise Power-to-signal Power====================
factor_noise_1=10^(-sir1/10);
factor_noise_2=10^(-sir2/10);
factor_noise_3=10^(-sir3/10);
factor_noise_4=10^(-sir4/10);
factor_noise_5=10^(-sir5/10);
factor_noise_targe=10^(-snr/10);
% //======================== ===============
d1=85pi/180;%%干扰1的方位角
d2=100pi/180;%干扰2的方位角
d3=147pi/180;%干扰3的方位角
d4=200pi/180;%干扰4的方位角
d5=250pi/180;%干扰5的方位角
d6=150pi/180;%目标的方位角
e1=15pi/180;%%干扰1的俯仰角
e2=25pi/180;%干扰2的俯仰角
e3=85pi/180;%干扰3的俯仰角
e4=50pi/180;%干扰4的俯仰角
e5=70pi/180;%干扰5的俯仰角
e6=85pi/180;%目标的俯仰角
% //====================目标信号==========================
t=1:1:SP;
fc=2e7;
Ts=1/(3e10);
S0=5cos(2pifctTs);%目标信号
for kk=1:N
phi_n(kk)=2pi(kk-1)/N;
end
%//==================== *** 纵矢量==========================================
A=[conj(exp(j2piR0cos(d6-phi_n)sin(e6)));conj(exp(j2piR0cos(d1-phi_n)sin(e1)));conj(exp(j2piR0cos(d2-phi_n)sin(e2)));conj(exp(j2piR0cos(d3-phi_n)sin(e3)));conj(exp(j2piR0cos(d4-phi_n)sin(e4)));conj(exp(j2piR0cos(d5-phi_n)sin(e5)))]';
A1=[conj(exp(j2piR0cos(d1-phi_n)sin(e1)));conj(exp(j2piR0cos(d2-phi_n)sin(e2)));conj(exp(j2piR0cos(d3-phi_n)sin(e3)));conj(exp(j2piR0cos(d4-phi_n)sin(e4)));conj(exp(j2piR0cos(d5-phi_n)sin(e5)))]';
% //==========================================================Power of the interference
% // depending on the signal power and SIR
Ps1=0;
Ps2=0;
Ps3=0;
Ps4=0;
Ps5=0;
S1=zeros(1,SP);
S2=zeros(1,SP);
S3=zeros(1,SP);
S4=zeros(1,SP);
S5=zeros(1,SP);
Ps0=S0S0'/SP; % signal power
Ps1=Ps0factor_noise_1;
Ps2=Ps0factor_noise_2;
Ps3=Ps0factor_noise_3;
Ps4=Ps0factor_noise_4;
Ps5=Ps0factor_noise_5;
% //==========================干扰信号的随机包络=========================
S1=normrnd(0,sqrt(Ps1/2),1,SP)+jnormrnd(0,sqrt(Ps1/2),1,SP);
S2=normrnd(0,sqrt(Ps2/2),1,SP)+jnormrnd(0,sqrt(Ps2/2),1,SP);
S3=normrnd(0,sqrt(Ps3/2),1,SP)+jnormrnd(0,sqrt(Ps3/2),1,SP);
S4=normrnd(0,sqrt(Ps4/2),1,SP)+jnormrnd(0,sqrt(Ps4/2),1,SP);
S5=normrnd(0,sqrt(Ps5/2),1,SP)+jnormrnd(0,sqrt(Ps5/2),1,SP);
%//
S=[S0;S1;S2;S3;S4;S5];
SS1=[S1;S2;S3;S4;S5];
X=AS;%信号加干扰
XX2=A1SS1; %接收到的干扰
Pw_noise=sqrt(Ps0factor_noise_targe/2);
a1=randn(N,SP);
a2=randn(N,SP);
a1=a1/norm(a1);
a2=a2/norm(a2);
W=Pw_noise(a1+sqrt(-1)a2);
X=X+W;
% //--------------------------SMI算法----------------------------------------
Rd=XS0'/SP;
R=XX'/(SP1);
Wc_SMI=pinv(R)Rd/(Rd'pinv(R)Rd);%权向量
Wc_SMI=Wc_SMI/norm(Wc_SMI);
Y_SMI=Wc_SMI'X; %SMI算法恢复出来的信号
%//-------------------------------------GS算法------------------
m=1;
for i=1:400:2000
X2(:,m)=XX2(:,i);
m=m+1;
end
a=zeros(1,8);
phi_n=zeros(1,8);
phi=0:pi/180:2pi;
theta=0:pi/180:pi/2;
for kk=1:8
a(kk)=1;
phi_n(kk)=2pi(kk-1)/8;
end
x1=zeros(1,8);
x2=zeros(1,8);
x3=zeros(1,8);
x4=zeros(1,8);
x5=zeros(1,8);
x1=X2(:,1)';
x2=X2(:,2)';
x3=X2(:,3)';
x4=X2(:,4)';
x5=X2(:,5)';
Z1=x1;
Z1_inner_product=Z1conj(Z1);
Z1_mode=sqrt(sum(Z1_inner_product));
Y1=Z1/Z1_mode;
Inner_product=sum(x2conj(Y1));
Z2=x2-Inner_productY1;
Z2_inner_product=sum(Z2conj(Z2));
Z2_mode=sqrt(Z2_inner_product);
Y2=Z2/Z2_mode;
Inner_product1=sum(x3conj(Y1));
Inner_product2=sum(x3conj(Y2));
Z3=x3-Inner_product1Y1-Inner_product2Y2;
Z3_inner_product=sum(Z3conj(Z3));
Z3_mode=sqrt(Z3_inner_product);
Y3=Z3/Z3_mode;
Inner_product1_0=sum(x4conj(Y1));
Inner_product2_0=sum(x4conj(Y2));
Inner_product3_0=sum(x4conj(Y3));
Z4=x4-Inner_product1_0Y1-Inner_product2_0Y2-Inner_product3_0Y3;
Z4_inner_product=sum(Z4conj(Z4));
Z4_mode=sqrt(Z4_inner_product);
Y4=Z4/Z4_mode;
Inner_product1_1=sum(x5conj(Y1));
Inner_product2_1=sum(x5conj(Y2));
Inner_product3_1=sum(x5conj(Y3));
Inner_product4_1=sum(x5conj(Y4));
Z5=x5-Inner_product1_1Y1-Inner_product2_1Y2-Inner_product3_1Y3-Inner_product4_1Y4;
Z5_inner_product=sum(Z5conj(Z5));
Z5_mode=sqrt(Z5_inner_product);
Y5=Z5/Z5_mode;
%Y1
%Y2
%Y3
%Y4
%Y5
w0=zeros(1,8);
w=zeros(1,8);
for mm=1:8;
w0(mm)=exp(-j2piR0cos(d6-phi_n(mm))sin(e6));
end
dd1=sum(w0conj(Y1))Y1;
dd2=sum(w0conj(Y2))Y2;
dd3=sum(w0conj(Y3))Y3;
dd4=sum(w0conj(Y4))Y4;
dd5=sum(w0conj(Y5))Y5;
w=w0-dd1-dd2-dd3-dd4-dd5;
Wc_GS=w;
Wc_GS=Wc_GS/(norm(Wc_GS));
Y_GS=Wc_GSX; %GS算法恢复出来的图像
%//----------------------------------MMSE算法-----------------------
Rd=XS0'/SP;
R=XX'/(SP1);
Wc_MMSE=pinv(R)Rd;
Wc_MMSE=Wc_MMSE/norm(Wc_MMSE);
Y_MMSE=Wc_MMSE'X; %MMSE算法恢复出来的信号
S0=S0/norm(S0);
Y_GS=Y_GS/norm(Y_GS);
Y_SMI=Y_SMI/norm(Y_SMI);
Y_MMSE=Y_MMSE/norm(Y_MMSE);
% figure(1)
% plot(real(S0));
% title('原始信号');
% xlabel('采样快拍数');
% ylabel('信号幅度');
% figure(2)
% plot(real(Y_SMI));
% title('运用SMI算法处理出的信号');
% xlabel('采样快拍数');
% ylabel('信号幅度');
% figure(3)
% plot(real(Y_GS));
% title('运用G-S算法处理出的信号');
% xlabel('采样快拍数');
% ylabel('信号幅度');
% figure(4)
% plot(real(Y_MMSE));
% for i=1:SP
% ss(i)=abs(S0(i)-Y_SMI(i))^2;
% end
% q_1=mean(ss);
% for i=1:SP
% ss1(i)=abs(S0(i)-Y_GS(i))^2;
% end
% q_2=mean(ss1);
% for i=1:SP
% ss2(i)=abs(S0(i)-Y_MMSE(i))^2;
% end
% q_3=mean(ss2);
%
% 1=1+q_1;
% 2=2+q_2;
% 3=3+q_3;
% end
% 1/16000
% 2/16000
% 3/16000
phi=0:pi/180:2pi;
theta=0:pi/180:pi/2;
%
% % //------------------------ 形成波束-----------------------------------------
F_mmse=zeros(91,361);
F_smi=zeros(91,361);
F_gs=zeros(91,361);
for mm=1:91
for nn=1:361
p1=sin(theta(mm));
p2=cos(phi(nn));
p3=sin(phi(nn));
q1=sin(e6);
q2=cos(d6);
q3=sin(d6);
for hh=1:8
w1=cos(phi_n(hh));
w2=sin(phi_n(hh));
zz1=q2w1+q3w2;
zz2=p2w1+p3w2;
zz=zz2p1-zz1q1;
F_mmse(mm,nn)= F_mmse(mm,nn)+conj(Wc_MMSE(hh))(exp(j2piR0(zz2p1)));
F_smi(mm,nn)=F_smi(mm,nn)+conj(Wc_SMI(hh))(exp(j2piR0(zz2p1)));
F_gs(mm,nn)=F_gs(mm,nn)+conj((Wc_GS(hh))')(exp(j2piR0(zz2p1)));
end
end
end
F_MMSE=abs(F_mmse);
F_SMI=abs(F_smi);
F_GS=abs(F_gs);
figure(5)
mesh(20log10(F_MMSE))
figure(6)
mesh(20log10(F_SMI))
title('SMI算法波束形成图');
xlabel('方位角');
ylabel('俯仰角');
zlabel('幅度/dB');
figure(7)
mesh(20log10(F_GS))
title('G-S算法波束形成图');
xlabel('方位角');
ylabel('俯仰角');
zlabel('幅度/dB');
要将电路的状态方程写入Matlab程序并产生数据,需要按照以下步骤进行 *** 作:
1 确定电路的状态方程:电路的状态方程描述了电路中各个元件的状态随时间变化的关系,通常是一组微分方程。根据电路的拓扑结构和元件特性,可以推导出电路的状态方程。
2 将状态方程转化为矩阵形式:将状态方程转化为矩阵形式,可以方便地在Matlab中进行计算。通常需要用到矩阵运算和微分方程求解方法。
3 编写Matlab程序:根据状态方程和矩阵形式,编写Matlab程序来求解电路的状态随时间的变化。程序中需要包括对初始条件的设定、微分方程求解方法的选择、时间步长的设置等。
4 运行程序并可视化数据:运行Matlab程序,得到电路状态随时间的变化数据。可以将数据可视化,比如绘制电路各个节点的电压随时间的变化曲线,来更直观地观察电路的动态响应。
总之,将电路的状态方程写入Matlab程序并产生数据需要深入了解电路的拓扑结构和元件特性,掌握矩阵运算和微分方程求解方法,以及熟悉Matlab编程技巧。
以上就是关于matlab程序画图全部的内容,包括:matlab程序画图、MATLAB 程序详解(关于波束形成)、如何将电路的状态方程写入matlab程序产生数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)