点のプロットの作成の方法

17 ビュー (過去 30 日間)
Ryosuke KIJIMA
Ryosuke KIJIMA 2020 年 1 月 27 日
回答済み: Hiroumi Mita 2020 年 1 月 31 日
上図のようなものを作成したいです。
作成の手順としては、
赤い点のプロット、点は上図のようになるように定数をプロット
点と点を線形補完で結ぶ
z軸上の黒い点からx軸に伸びる線を一定間隔で伸ばす
線と赤い点までの距離を求める
距離を求める赤い点の決定は、最近傍点を選出
プロットの部分から上手くできません。
途中まででもいいのでお助けください。

採用された回答

Hiroumi Mita
Hiroumi Mita 2020 年 1 月 27 日
編集済み: Hiroumi Mita 2020 年 1 月 27 日
こんな感じでしょうか?
%紅い点の座標(適当な定数)
RED_x=[5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
RED_z=[1 1.2 1.3 1.4 1.7 1.8 2 2.1 2.3 2.1 1.8 1.7 1.4 1.3 1.2 ]
figure(1);plot(RED_x,RED_z,'ro')
hold on%上書き開始
for ii=1:length(RED_x)-1
%赤点間の線を結ぶ
line([RED_x(ii),RED_x(ii+1)],[RED_z(ii),RED_z(ii+1)])
end
hold off%上書き停止
KURO_DAI_x=0;%黒丸大のx座標
KURO_DAI_z=10;%黒丸大のz座標
KURO_SHO_x=[5:3:20]%黒丸小のx座標
KURO_SHO_z=zeros(1,15)%黒丸小のz座標
hold on%上書き開始
for ii=1:length(KURO_SHO_x)
%黒丸間の線を結ぶ
line([KURO_DAI_x,KURO_SHO_x(ii)],[KURO_DAI_z,KURO_SHO_z(ii)],'Color','black')
end
hold off%上書き停止

その他の回答 (5 件)

Ryosuke KIJIMA
Ryosuke KIJIMA 2020 年 1 月 27 日
かなりイメージと近くなりました! ありがとうございます!
XとZの値を変えたく、数値を変更して動かしてみたところ、ベクトルは同じ長さ出なければならない。というエラーが出てしまいました。 どうすればよろしいでしょうか。
X=3 6 9 12 15 18 21 24 27 30 33 36 39 42 Z=100 120 150 180 210 240 270 240 210 180 150 120 100 Z軸上の点は(0,300) にしたいです。

Hiroumi Mita
Hiroumi Mita 2020 年 1 月 27 日
XとZのベクトルの数を合わせましょう。数えると、Xは14個、Zは13個です。

Ryosuke KIJIMA
Ryosuke KIJIMA 2020 年 1 月 27 日
編集済み: Ryosuke KIJIMA 2020 年 1 月 27 日
本当にありがとうございます。 イメージ通りの図を作ることができました。
Z軸上の大きい点と赤い点までの距離を出したい場合は、どうすればよろしいでしょうか。
赤い点の決定はz軸上の点から引かれた、一番近い点を選出したいです。
このようなコードで考えています。
%紅い点の座標(適当な定数 )
RED_x=[3 6 9 12 15 18 21 24 27 30 33 36 39]
RED_z=[100 105 115 130 155 175 190 175 155 130 115 105 100]
figure(1);plot(RED_x,RED_z,'ro')
hold on%上書き開始
for ii=1:length(RED_x)-1
%赤点間の線を結ぶ
line([RED_x(ii),RED_x(ii+1)],[RED_z(ii),RED_z(ii+1 )])
end
hold off%上書き停止
KURO_DAI_x=0;%黒丸大のx座標
KURO_DAI_z=1000;%黒丸大のz座標
KURO_SHO_x=[3:3:45]%黒丸小のx座標
KURO_SHO_z=zeros(1,15)%黒丸小のz座標
hold on%上書き開始
for ii=1:length(KURO_SHO_x )
%黒丸間の線を結ぶ
line([KURO_DAI_x,KURO_SHO_x(ii)],[KURO_DAI_z,KURO_SHO_z(ii)],'Color','black ')
end
hold off%上書き停止

Hiroumi Mita
Hiroumi Mita 2020 年 1 月 27 日
あるA点(xa,za)とあるB点(xb,zb)の間の距離の公式は
L=sqrt( (xa-xb)^2 + (za-zb)^2 )
なので、これを応用しましょう。
>>Z軸上の大きい点と赤い点までの距離を出したい場合は、どうすればよろしいでしょうか。
  1 件のコメント
Ryosuke KIJIMA
Ryosuke KIJIMA 2020 年 1 月 27 日
編集済み: Ryosuke KIJIMA 2020 年 1 月 27 日
ご回答ありがとうございます。
下の図で考えたとき、
一つの線分の差は上手くいったのですが、
すべての線分で距離の差を試してみましたが、上手くいきません。
原因を教えていただけますでしょうか。
また、図内の下の干渉模様も作成したいと考えています。
赤点までのそれぞれの距離の差を足し合わせて、
12cm(0.12m)サイクルで作成しようとしていますが、
方法が思いつきません。
%赤い点の座標(適当な定数 )
RED_x=zeros(13,1);
for k=1:point_num
RED_x(k)=Z+3*(k-1);
end
RED_z=[100;105;115;130;155;175;190;175;155;130;115;105;100];
figure(1);plot(RED_x,RED_z,'ro')
hold on%上書き開始
for ii=1:length(RED_x)-1
%赤点間の線を結ぶ
line([RED_x(ii),RED_x(ii+1)],[RED_z(ii),RED_z(ii+1 )])
end
%青い点の座標(適当な定数 )
BLUE_x=zeros(13,1);
for k=1:point_num
BLUE_x(k)=Z+3*(k-1);
end
BLUE_z=[100;110;125;145;175;200;220;200;175;145;125;110;100];
plot(BLUE_x,BLUE_z,'bo')
for ii=1:length(BLUE_x)-1
%青点間の線を結ぶ
line([BLUE_x(ii),BLUE_x(ii+1)],[BLUE_z(ii),BLUE_z(ii+1 )])
end
hold off%上書き停止
KURO_DAI_x=0;%黒丸大のx座標
KURO_DAI_z=1000;%黒丸大のz座標
%入射角の決定
r=30;
d=r*pi/180;
Z=tan(d)*KURO_DAI_z;
point_num_B=24;
point_num=13;
KURO_SHO_x=zeros(point_num_B,1);
KURO_SHO_z=zeros(point_num_B,1);
for k=1:point_num_B
KURO_SHO_x(k)=Z+3*(k-1);
end
for ii=1:length(KURO_SHO_x )
line([KURO_DAI_x,KURO_SHO_x(ii)],[KURO_DAI_z,KURO_SHO_z(ii)],'Color','black ') ;
end
hold on%上書き開始
for ii=1:length(KURO_SHO_x )
%黒丸間の線を結ぶ
line([KURO_DAI_x,KURO_SHO_x(ii)],[KURO_DAI_z,KURO_SHO_z(ii)],'Color','black ')
end
hold off%上書き停止
%距離の算出
L_RED=zeros(13,1);
for i=1:13
L_RED(i)=sqrt(((KURO_DAI_z-RED_z(:,i))^2)+((RED_x(:,i)-KURO_DAI_x)^2));
end
L_BLUE=zeros(13,1);
for i=1:13
L_BLUE(i)=sqrt(((KURO_DAI_z-BLUE_z(:,i))^2)+((BLUE_x(:,i)-KURO_DAI_x)^2));
end
%距離の差の算出
L_RB=L_RED-L_BLUE;
L_all=horzcat(L_RED,L_BLUE,L_RB);

サインインしてコメントする。


Hiroumi Mita
Hiroumi Mita 2020 年 1 月 31 日
MATLABの変数は、スカラーではなく、ベクトルや行列です。
行列Z,Wの積は二乗が成立するには、Zの列数とWの行数が同じでなくてはいけません。
Z* W
Z=[z1 z2 z3],w=[w1 w2 w3]のとき
[sqrt((z1-w1)^2),sqrt((z2-w2)^2),sqrt((z3-w3)^2)]
といった各成分毎の演算を全体のベクトルでやりたいのか?
と思われますが、そのときは、成分毎の演算をするように.(ドット)が必要です。
次を参考にしましょう。
Ax=1
Az=11
Bx=[1 2 3 4 5 6 7 8 9 10]
Bz=[11 12 13 14 15 16 17 18 19 20]
L1=(Ax-Bx)^2+(Az-Bz)^2%間違い
L2=(Ax-Bx).^2+(Az-Bz).^2%正解 

カテゴリ

Help Center および File Exchangeライン プロット についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!