Matlab出错向量长度必须相同,代码已贴。错误使用plot3,向量长度必须相同

该博客通过Matlab代码演示了如何计算不同高度下LED发射的光功率分布,以及对应的射频接收功率。针对半功率角为60度的LED,计算了多个位置的接收光功率,并利用光电转换系数和反射系数,求得射频接收功率分布,最终通过plot3函数绘制了三维坐标系中的分布情况。

clc;

clear all;

theta=60;        %半功率角

m=-log10(2)/log10(cosd(theta));

P_LED=0.02;

nLED=60;

P_total=nLED*nLED*P_LED;

Ar=1e-4;

Ts=1;

index=1.5;

FOV=70;

R=0.4;  %光电转换系数

Crf=7.8e-8;  %??

G_Con=(index.^2)./(sind(FOV).^2);

rho=0.8; %反射系数

lx=5;

ly=5;

h=2.5

h1=0.5;

h2=1;

h3=1.5;

h4=2;

T1=[1,1,h];

T2=[4,1,h];

T3=[1,4,h];

x=linspace(0,lx,6);

y=linspace(0,ly,6);

[XR,YR]=meshgrid(x,y);

%h=0.5时 来自LED1的接收光功率分布

D11=sqrt((XR-T1(1,1)).^2+(YR-T1(1,2)).^2+h1.^2);

cosphi_A11=h1./D11;

receiver_angle=acosd(cosphi_A11);

H11=(m+1).*Ar.*cosphi_A11.^(m+1)./(2.*pi.*D11.^2);

Pr11=P_total.*H11.*Ts.*G_Con;

Pr11(find(abs(receiver_angle)>FOV))=0;

%h1=0.5时 LED1的射频接收功率和距离分布

Prf11=(R*Pr11).^2;

de11=(Crf./Prf11).^(1/4);

%h1=0.5时 来自LED2的接收光功率分布

D12=sqrt((XR-T2(1,1)).^2+(YR-T2(1,2)).^2+h1.^2);

cosphi_A12=h1./D12;

receiver_angle=acosd(cosphi_A12);

H12=(m+1).*Ar.*cosphi_A12.^(m+1)./(2.*pi.*D12.^2);

Pr12=P_total.*H12.*Ts.*G_Con;

Pr12(find(abs(receiver_angle)>FOV))=0;

%h1=0.5时 LED2的射频接收功率和距离分布

Prf12=(R*Pr12).^2;

de12=(Crf./Prf12).^(1/4);

%h1=0.5时 来自LED3的接收光功率分布

D13=sqrt((XR-T3(1,1)).^2+(YR-T3(1,2)).^2+h1.^2);

cosphi_A13=h1./D13;

receiver_angle=acosd(cosphi_A13);

H13=(m+1).*Ar.*cosphi_A13.^(m+1)./(2.*pi.*D13.^2);

Pr13=P_total.*H13.*Ts.*G_Con;

Pr13(find(abs(receiver_angle)>FOV))=0;

%h1=0.5时 LED3的射频接收功率和距离分布

Prf13=(R*Pr13).^2;

de13=(Crf./Prf13).^(1/4);

for i=0:1:5

for j=0:1:5

hold on;

plot3(i,j,h1,'go');

end

end

p=0;

q=0;

locx1=zeros(1,36);

locy1=zeros(1,36);

for n=1:6

for m=1:6

[locx,locy]=triposition3(T1(1),T1(2),de11(n,m),T2(1),T2(2),de12(n,m),T3(1),T3(2),de13(n,m));

hold on;

plot3(locx,locy,h1,'r*');

p=p+1;

q=q+1;

locx1(1,p)=locx;

locy1(1,q)=locy;

end

end

a=reshape(locx1,6,6);

b=reshape(locy1,6,6);

A=a';

B=b';

function [locx,locy] =triposition3(xa,ya,de11,xb,yb,de12,xc,yc,de13)

syms x y

f1='2*x*(xa-xc)+xc^2-xa^2+2*y*(ya-yc)+yc^2-ya^2-(de13^2-de11^2)';

f2='2*x*(xb-xc)+xc^2-xb^2+2*y*(yb-yc)+yc^2-yb^2-(de13^2-de12^2)';

[xx,yy]=solve(eval(f1),eval(f2),x,y);

locx=eval(xx);

locy=eval(yy);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值