二维极坐标天线方向图在直角坐标系已经画出来了,但是不知道用极坐标在matlab中怎么画?
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/08/23 17:02:14
二维极坐标天线方向图在直角坐标系已经画出来了,但是不知道用极坐标在matlab中怎么画?
程序如下:
%%LMS
clear,clc
m=8; %sensors
n=2; %sources
theta=[0 -45]; %in angle
d=1/2; %1/2lambada
N=500; %samples
L=100; %resolution in[-90’ 90’]
c=0.0001; %是为了防止过小而引起步长过大,从而导致算法的发散
%generate the source signals
%s=2*round(rand(n,N))-1;
s=round(rand(n,N));
%generate the A matrix
A=exp(-j*2*pi*d*[0:m-1].'*sin(theta*pi/180));
%generate the noise component
e=0.1*(randn(m,N));
%generate the ULA data
Y=A*s+e;
h=cov(Y.');
mu=1/(20*trace(h)); %设定步长因子
%initialize weight matrix and associated Parameters for LMS predictor
de=s(1,:);
w=zeros(m,1);
for k=1:N
%Predict next sample and error
y(k)=w'*Y(:,k);
e(k)=de(k)-y(k);
%adapt weight matrix and step size
w=w+mu*Y(:,k)*conj(e(k));
end
% beamforming using the LMS method
beam=zeros(1,L);
for i=1:L
a=exp(-j*2*pi*d*[0:m-1].'*sin(-pi/2+pi*(i-1)/L));
beam(i)=20*log10(abs(w'*a));
end
%Plotting command followed
figure
angle=-90:180/L:(90-180/L);
plot(angle,beam);
grid on
xlabel('angle');
ylabel('幅度响应/dB');
title('LMS算法波束成形');
figure
for k=1:N
en(k)=abs(e(k)^2);
end
plot(en);
grid on
xlabel('angle');
ylabel('幅度响应/dB');
title('LMS算法稳态误差');
程序如下:
%%LMS
clear,clc
m=8; %sensors
n=2; %sources
theta=[0 -45]; %in angle
d=1/2; %1/2lambada
N=500; %samples
L=100; %resolution in[-90’ 90’]
c=0.0001; %是为了防止过小而引起步长过大,从而导致算法的发散
%generate the source signals
%s=2*round(rand(n,N))-1;
s=round(rand(n,N));
%generate the A matrix
A=exp(-j*2*pi*d*[0:m-1].'*sin(theta*pi/180));
%generate the noise component
e=0.1*(randn(m,N));
%generate the ULA data
Y=A*s+e;
h=cov(Y.');
mu=1/(20*trace(h)); %设定步长因子
%initialize weight matrix and associated Parameters for LMS predictor
de=s(1,:);
w=zeros(m,1);
for k=1:N
%Predict next sample and error
y(k)=w'*Y(:,k);
e(k)=de(k)-y(k);
%adapt weight matrix and step size
w=w+mu*Y(:,k)*conj(e(k));
end
% beamforming using the LMS method
beam=zeros(1,L);
for i=1:L
a=exp(-j*2*pi*d*[0:m-1].'*sin(-pi/2+pi*(i-1)/L));
beam(i)=20*log10(abs(w'*a));
end
%Plotting command followed
figure
angle=-90:180/L:(90-180/L);
plot(angle,beam);
grid on
xlabel('angle');
ylabel('幅度响应/dB');
title('LMS算法波束成形');
figure
for k=1:N
en(k)=abs(e(k)^2);
end
plot(en);
grid on
xlabel('angle');
ylabel('幅度响应/dB');
title('LMS算法稳态误差');
极坐标画图,在matlab里用polar(theta,rho)
theta是幅角,rho是径失
再问: 谢谢你哦 ,这个我明白,只是想用上边这个程序画极坐标方向图,你可不可以帮我看下上边这个代码,因为我不是很明白这个程序里边角度与幅度的具体关系
再答: .....
从程序上看,角度是angle,幅度是beam其中角度angle是用角度为单位,所以画极坐标图要先转化为弧度而beam是以db为单位,表示衰减,也要先取消对数,把数值转换为0~1之间才好比较
换弧度可以用matlab自带函数deg2rad,当然也可以用角度*pi/180而相对幅度信号r/rmax,假设最大值为1,表示没有衰减那么用对db表示就是rdb= 10*log10(r/rmax)反过来就是r/rmax=10.^(rdb/10);
于是使用原来的angle,beam数据变化一下,画的极坐标图如下polar(deg2rad(angle),10.^(beam/10));
原来数据是db为单位的,动态范围比较广,看到有很多旁瓣实际上,这些旁瓣很小,不足0.1,在上图中看不到,放大后可以看到![](http://img.wesiedu.com/upload/2/55/255ea54d097ba60f5b0728f5687364d2.jpg)
再问: 太感谢你了 ,朋友,我叫杜升,今年要硕士毕业,可不可以告诉我你qq号啊 ,加你好友,以后还希望向你请教啊
theta是幅角,rho是径失
再问: 谢谢你哦 ,这个我明白,只是想用上边这个程序画极坐标方向图,你可不可以帮我看下上边这个代码,因为我不是很明白这个程序里边角度与幅度的具体关系
再答: .....
从程序上看,角度是angle,幅度是beam其中角度angle是用角度为单位,所以画极坐标图要先转化为弧度而beam是以db为单位,表示衰减,也要先取消对数,把数值转换为0~1之间才好比较
换弧度可以用matlab自带函数deg2rad,当然也可以用角度*pi/180而相对幅度信号r/rmax,假设最大值为1,表示没有衰减那么用对db表示就是rdb= 10*log10(r/rmax)反过来就是r/rmax=10.^(rdb/10);
于是使用原来的angle,beam数据变化一下,画的极坐标图如下polar(deg2rad(angle),10.^(beam/10));
![](http://img.wesiedu.com/upload/3/eb/3ebd93e2041e229364f694d8be48c3e1.jpg)
![](http://img.wesiedu.com/upload/2/55/255ea54d097ba60f5b0728f5687364d2.jpg)
再问: 太感谢你了 ,朋友,我叫杜升,今年要硕士毕业,可不可以告诉我你qq号啊 ,加你好友,以后还希望向你请教啊
怎样在matlab中画出这样的圆,类似的,然后最好加上直角坐标系的坐标!
matlab 在极坐标中画椭圆
matlab 知道一个矩阵,怎么将它变为二维坐标,并画出直线.
用matlab在极坐标中画圆怎么画
我在matlab中imread()了一张图,画出了坐标,为什么坐标原点变成在左上角了,怎么转化成原点在左下角
在cad里 已经调好了单位是毫米 想画一条20米的线 但是为什么画出来的线太长了 不知道怎么调才好?
如何用matlab在极坐标中画出含变量的图
在同一个平面直角坐标系中,用描点法画出函数y=x分之4和y=-x分之4【不画图坐标也行】
在matlab中怎么在极坐标下画三维图
在matlab中可以用极坐标做图么?
这个函数如何用matlab在三维坐标中画出
在平面直角坐标系xOy中,O为坐标原点