for文で得た値をplotしたい

조회 수: 27 (최근 30일)
Jun Ozaki
Jun Ozaki 2021년 5월 30일
댓글: Hernia Baby 2021년 5월 30일
for文で0~3000回姿勢計算を行い、その一回ごとの結果をplotしてグラフにしたいのですが、どのように配列すればいいのでしょうか。
for i = 0 : 0.001 : 3
R = R + r *0.001
end
a=~;b=~;c=~;
上のa,b,cを3000ずつplotしたいです。
  댓글 수: 3
Jun Ozaki
Jun Ozaki 2021년 5월 30일
すみません、説明不足でした。
r = R(単位行列:3×3行列)×W(角速度:3×3行列)の行列です。
MATLABに関して知識が薄いためi-1を保持する場合としない場合の違いが分からないのですが
iが0から0.001づつ変化するごとにプロットしたい場合、更新して過去の情報を消すと、iが3になった結果のみがグラフになるのでしょうか。
Hernia Baby
Hernia Baby 2021년 5월 30일
返信ありがとうございます。
自分の勘違いで更新はwhile文にする必要があると思い込んでいました。
確認しましたが、for文でも可能でした。
プロットはhold on状態でなければ、for文内に組み込むことでプロット可能です。
hold onの場合は事前のプロットが保持されます。
遷移をゆっくり見たい場合は、回答に入れました通り、pause関数でしばらく次の計算を待つことができます。

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

채택된 답변

Hernia Baby
Hernia Baby 2021년 5월 30일
for文というよりwhile文のほうが便利かなと思い、サンプルコードを書きました。
刻み幅が0.001だと、plotがゆっくりなので0.01刻みにしています。
clear,clc,close all;
R = zeros(3,1);
cnt = 0;
while cnt <= 3
r = 0.001*[cnt 10^3*sin(2*pi*cnt) 20^3*cos(2*pi*cnt)]';
R = R + r;
for i = 1:3
subplot(3,1,i)
scatter(cnt,R(i));
xlim([0 3])
end
pause(0.001);
cnt = cnt + 0.01;
end
  댓글 수: 1
Hernia Baby
Hernia Baby 2021년 5월 30일
今確認取ってみましたが、for文でも可能でした。
またplot3で3次元描写する方法も以下に示します。
clear,clc,close all;
R = zeros(3,1);
cnt = 0;
for j = 0:0.01:3
r = 0.001*[j 10^3*sin(2*pi*j) 20^3*cos(2*pi*j)]';
R = R + r;
plot3(R(1),R(2),R(3),'ro')
%{
% a,b,cのそれぞれで描写する場合
for i = 1:3
subplot(3,1,i)
scatter(cnt,R(i));
xlim([0 3])
end
%}
pause(0.001);
end

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Annotations에 대해 자세히 알아보기

태그

제품


릴리스

R2019a

Community Treasure Hunt

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

Start Hunting!