複数の円の表示

6 views (last 30 days)
Shunsuke Kimura
Shunsuke Kimura on 7 Feb 2017
Commented: Shunsuke Kimura on 8 Feb 2017
中心座標(x, y) と半径r の列 X, Y, R をそれぞれ同じサイズで保存しているとき,それぞれの円をプロットするスクリプトをfor 文を使わずに実装したいです. どのようにすれば良いのでしょうか? ちなみに,for 文を使って所望の動作を実現するには以下のようなスクリプトになります.
figure
hold on
axis equal
t = linspace(0,2*pi,100);
X = [1; 2; 4];
Y = [3; 2; 1];
R = [1; 2; 0.5];
for i = 1:numel(X)
plot(R(i)*sin(t)+X(i),R(i)*cos(t)+Y(i))
end
難しさとしてはt のサイズが X, Y, R と異なること(サイズが同じであっても所望の動作はできません), さらに,kron で無理やり点の集合を作るとすべての点が繋がった状態で表示されてしまうなどの問題を抱えております. 目的としては X, Y, R がある程度大規模なものを作成する予定です. どうぞよろしくお願いいたします.

Accepted Answer

mizuki
mizuki on 7 Feb 2017
for の部分を次の1行で置き換える方法ではいかがでしょうか。(for で描いたときと xlim, ylim が少し変わります)
plot( (R*sin(t)+X)', (R*cos(t)+Y)' )
  5 Comments
Jiro Doke
Jiro Doke on 8 Feb 2017
Edited: Jiro Doke on 8 Feb 2017
それは OS の問題ではなく、mizuki さんが提案したコマンドが R2016b の新機能を使っているからです。
R2016a 以前でしたら、使われている代案でやるのをお勧めします。
因みにもう少し効率よい構文がこちらです。(R2016a 以前)
plot( bsxfun(@plus,R*sin(t),X)', bsxfun(@plus,R*cos(t),Y)' )
Shunsuke Kimura
Shunsuke Kimura on 8 Feb 2017
ご回答ありがとうございます.おかげさまでキレイに書くことができました.

Sign in to comment.

More Answers (0)

Products

Community Treasure Hunt

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

Start Hunting!