필터 지우기
필터 지우기

3次元グラフの作成

조회 수: 7 (최근 30일)
N/A
N/A 2018년 5월 29일
편집: michio 2018년 5월 29일
下記に示すようなプログラムを書き、x軸がx、y軸がy、z軸がQ1の3次元グラフを作成しようとしましたが、「エラー: plot3 ベクトルは同じ長さでなければなりません。エラー: sample (line 73)plot3(e1,e2,Q1);」というような内容のエラーが表示されました。どのように修正すれば、3次元グラフを作成できますか? Q1を求める計算式は正しいものとします。
A=19.6*10^-6;%受光面積
n=1.49;%屈折率
k=deg2rad(62.5);%LEDの半値角
m=-log(2)/log(cos(k));
Pt=0.764;%TXパワー
R=0.24;%受光感度
kb=1.38*10^(-23);%ボルツマン定数
T=300;%絶対温度
F=1;%雑音指数
BR=10*10^6;%RXの帯域幅
RL=510;%フィードバック抵抗
q=1.602*10^(-19);%電子電荷
Id=120*10^(-12);%暗電流
I0=0;%スペース時の電流
wx=5;
wy=5;
fov=25;
H=1.5;
oR=50;%フォトダイオードのなす角度
OR=deg2rad(oR);
t=deg2rad(0);%TXの傾き角
i=1;
j=1;
for x=0:0.1:wx
e1(i)=x;
for y=0:0.1:wy
e2(j)=y;
H1=sqrt((wx/2-x)^2+y^2+H^2);%TX1とRXユニット間の距離
cost11=H/H1;%cos(ΦT)
t11=acos(cost11);%ΦT
rad2t11=rad2deg(t11);
cosr11=(y*sin(OR)+H*cos(OR))/H1;%cos(ΦR)
r11=acos(cosr11);%ΦR
rad2r11=rad2deg(r11);%ラジアンを度に変換する
if rad2r11<=fov
h11=((m+1)*A*(cost11^m)*(n^2)*cosr11)/(sin(deg2rad(fov))*sin(deg2rad(fov))*2*3.14*power(H1,2));
P11=Pt*h11;
elseif rad2r11>fov
h11=0;
P11=Pt*h11;
end
cosr12=((wx/2-x)*sin(OR)+H*cos(OR))/H1;%cos(ΦR)
r12=acos(cosr12);%ΦR
rad2r12=rad2deg(r12);%ラジアンを度に変換する
if rad2r12<=fov
h12=((m+1)*A*(cost11^m)*(n^2)*cosr12)/(sin(deg2rad(fov))*sin(deg2rad(fov))*2*3.14*power(H1,2));
P12=Pt*h12;
elseif rad2r12>fov
h12=0;
P12=Pt*h12;
end
P1=P11+P12;
I1=R*P1;
N1=(4*kb*T*F*BR)/RL+2*q*(I1+Id)*BR;
N0=(4*kb*T*F*BR)/RL+2*q*Id*BR;
Q1(i,j)=(I1-I0)/(sqrt(N1)+sqrt(N0));
BER1=0.5*erfc(Q1/sqrt(2));
j=j+1;
end
i=i+1;
end
plot3(e1,e2,Q1);

채택된 답변

Akira Agata
Akira Agata 2018년 5월 29일
plot3(e1,e2,Q1) を実行するには、エラーメッセージにあるように、e1, e2, Q1 を同じサイズの1次元配列にする必要があります。とりいそぎ、以下2点の修正でプロットできることを確認しました(ちなみに以下はあくまで応急処置ですので、e1, e2, Q1の事前割り当てやベクトル化などもご検討下さい)。
e1(i)=x; を、 y に対するforループの中に e1(j)=x; として入れる
② Q1 が2次元配列にならないよう、 Q1(j)=(I1-I0)/(sqrt(N1)+sqrt(N0)); に修正する
これでe1, e2, Q1 を同じサイズの1次元配列にすることができます。あとは見やすさを考慮して以下のようにプロット部分を修正のうえ実行してみました。
plot3(e1,e2,Q1,'.');
grid on
xlabel('x','FontSize',14)
ylabel('y','FontSize',14)
zlabel('Q1','FontSize',14)
  댓글 수: 1
N/A
N/A 2018년 5월 29일
ありがとうございました。

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 ライン プロット에 대해 자세히 알아보기

제품


릴리스

R2017a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!