MATLAB Answers

点のプロットの作成

5 views (last 30 days)
Ryosuke KIJIMA
Ryosuke KIJIMA on 27 Jan 2020
Answered: Shunichi Kusano on 3 Feb 2020
上図のようなものを作りたく途中まで書きましたが、
%距離の差を取るコードがうまく実行できない、
%入射角の決定により斜線内にプロットが収まらない
原因を教えていただけますでしょうか。
また、図内の干渉縞を作りたいです。
距離の差を足し合わせて、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);

  0 Comments

Sign in to comment.

Answers (2)

michio
michio on 29 Jan 2020
こちらで回答ついていますか?

  2 Comments

Ryosuke KIJIMA
Ryosuke KIJIMA on 29 Jan 2020
ついておりません。
michio
michio on 29 Jan 2020
同様の画像が見えたもので、失礼いたしました。

Sign in to comment.


Shunichi Kusano
Shunichi Kusano on 3 Feb 2020
こちらまだ検討中でしょうか。
前半の質問については、検討のためにそのままで実行可能なコードを載せていただければ助かります。ご掲載のコードですとpoint_numやZが定義されていないため、すぐにエラーとなり、距離を取るところまで到達できないのでどこに問題があるのかの洗い出しのハードルが高い状況です。
後半の干渉縞のカラーマップはmatlab内のデフォルトには無いため、添付の通り作成いたしました。12cmサイクルでこのカラーマップを使うには距離を、12㎝を360度とする角度(位相)に変換するか、mod関数を使って12cmで割った余りに変換してしまうのがいいと思います。

  0 Comments

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!