複数の円の表示

6 次查看(过去 30 天)
Shunsuke Kimura
Shunsuke Kimura 2017-2-7
中心座標(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 がある程度大規模なものを作成する予定です. どうぞよろしくお願いいたします.

采纳的回答

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

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by