matlab 编程问题,老是错,求救

来源:百度知道 编辑:UC知道 时间:2024/06/03 23:04:12
% clear all;clc;
rs=270;rm=100;rp=-100:10/1:500;
rsm=280;rsm=120;rsp=60;rps=120;rmsp=300;rspm=80;
Wm=30;Ws=20;Wp=50;
Lw=-2;t=1/3;
M=(rp*rs)/(Wp*Ws);
N=((rm/Wm)*sqrt((rs*Wm*Wp)/(Ws*(rm*Wp+rp*Wm)))+(rs/Ws)*sqrt((Ws*(rm*Wp+rp*Wm))/(rs*Wm*Wp))+(rp/Wp)*sqrt((rs*Wm*Wp)/(Ws*(rm*Wp+rp*Wm))));
PLR=10*log10((t/(4*pi))^2*((1/(rs+rm+rp))^2))+Lw*N;
PLDD=10*log10((t/(4*pi))^2*(rs*t^2)/(16*rm*rsm*rsp*rps^2));
PLRD=10*log10((t/(4*pi))^2*((t*rs^2)/(4*(rs+rm)^2*rsp*rps^2)))+Lw*N;
PLDR=10*log10((t/(4*pi))^2*(t/(4*rmsp*rspm^2)))+Lw*M;
PL=PLDD+PLDR+PLRD+PLR;
plot(rp,PLDD,'c',rp,PLDR,'m',rp,PLRD,'y',rp,PLR,'r',rp,PL,'g')

MATLAB这种编程语言是面向矩阵操作的,所有的运算符均是,例如A=1,B=[1 2],命令A/B就会报错,因为B不是满秩的方阵,可能你的本意是要得到[1 0.5]这个结果,因此需要注意:
(1)对于矩阵操作,可直接用+ - * / ^运算符。
(2)对于数值操作,应相应的改为:+ - .* ./ .^ 即在相应的运算符前加一个点符号。

clear all
clc

rs=270;rm=100;rp=-100:10/1:500;
rsm=280;rsm=120;rsp=60;rps=120;rmsp=300;rspm=80;
Wm=30;Ws=20;Wp=50;
Lw=-2;t=1/3;
M=(rp*rs)/(Wp*Ws);
N=((rm./Wm).*sqrt((rs.*Wm.*Wp)./(Ws.*(rm.*Wp+rp.*Wm)))+(rs./Ws).*sqrt((Ws.*(rm.*Wp+rp.*Wm))./(rs.*Wm.*Wp))+(rp./Wp).*sqrt((rs.*Wm.*Wp)./(Ws.*(rm.*Wp+rp.*Wm))));
PLR=10.*log10((t./(4*pi)).^2.*((1./(rs+rm+rp)).^2))+Lw.*N;
PLDD=10*log10((t./(4*pi)).^2*(rs.*t.^2)/(16.*rm.*rsm.*rsp.*rps.^2));
PLRD=10*log10((t./(4.*pi)).^2.*((t.*rs.^2)./(4.*(rs+rm).^2.*rsp.*rps.^2)))+Lw.*N;
PLDR=10*log10((t./(4*pi)).^2.*(t./(4.*rmsp.*rspm.^2)))+Lw.*M;
PL=PLDD+PLDR+PLRD+PLR;
plot(rp,PLDD,'c',rp,PLDR,'m',rp,PLRD,'y',rp,PLR,'r',rp,PL,'g')

这是什么呀?给我解释解释。