필터 지우기
필터 지우기

プログラムのパラメー​タをforで変更し実​行した後値を格納した​い

조회 수: 4 (최근 30일)
Shumpei Hosokawa
Shumpei Hosokawa 2021년 12월 24일
댓글: Atsushi Ueno 2021년 12월 29일
お疲れ様です.
表題の件ですが,現在シミュレーションプログラムを書いていて,パラメータを変更し繰り返し実行し値を格納するという作業を行いたいのですが,以下のコードでは行列の形式が合わないというエラーを吐きます.
vo_vector = zeros(3,10);
for i = 1:10
w = [0 0 i]';
Spin_Top_Sim_1
vo_vector(:,i) = vo;
end
Spin_Top_Sim_1というのが件のシミュレーションのプログラムです.w=[0 0 i]とし,ループを進めるごとに別のパラメータをSpin_Top_Sim_1に与えプログラムを実行すると毎回異なるvoを出力します.そのvoをvo_vector(3×10行列)に繰り返し回数の10回分格納したいのですが,どのようにループを書き換えればよいでしょうか.ご教授お願いします.
  댓글 수: 5
Shumpei Hosokawa
Shumpei Hosokawa 2021년 12월 25일
ありがとうございます.iではなくkでループを作ってみたところSpin_Top_Sim_1にwの値をkで変化させSpin_Top_Sim_1からwの値ごとに異なるvoを出力するようにはなりました.
vo_vector = zeros(3,10);
for k = 1 : 10
w = [0 0 k]';
Spin_Top_Sim_1
vo_vector(:,k) = vo
end
しかし,出力した結果をvo_vector(:,k)で3x10行列にまとめたいのですが,
vo_vector =
0 0 4.1435
0 0 -2.5313
0 0 23.7175
上のように,3列目にのみ値が入りループの度に3列目の値だけ更新されてしまいます.k=1の時には1列目,k=2の時には2列目...と値が入るようにしたいのですがどのようにすればよいでしょうか.
Atsushi Ueno
Atsushi Ueno 2021년 12월 25일
それもSpin_Top_Sim_1の処理がなければ有り得ない動作なので、Spin_Top_Sim_1がkの値を変更していると断定できます。

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

채택된 답변

Shumpei Hosokawa
Shumpei Hosokawa 2021년 12월 29일
Spin_Top_Sim_1でkが値を変更していることが確認できました.またforループを書き直して実行したのですが,値を格納したところループは回るのですが,次のような結果になりました.毎回の値は記録されるのですがそれ以外の列が0列になっています.
count_w = 30; % 1 ~ 30
uLINK_1(1).w = [0 0 count_w]'; % 条件をSpin_Top_Sim_1に与える,本来は当該プログラムの初期条件
vo_measure1 = zeros(3,5); % 空行列
for l= 1:5
psi = pi/180 * l;
theta = pi/180 * l;
phi = pi/180 * l;
Spin_Top_Sim_1
vo_measure1(:,l) = uLINK_1(1).vo
end
上の通りのプログラムを書きましたところ,結果が以下の通りになりました.
vo_measure1 =
1.0e+03 *
0 0 0 0 2.4086
0 0 0 0 1.0186
0 0 0 0 0.2107
上の結果はl = 5のときで5列目にのみデータが入ってしまいました.l = 4の時には4列目にのみデータが入ってしまいます.forループでこのように値が入る場合どこを修正すればよいでしょうか.これもSpin_Top_Sim_1の処理によるものだと考えられますでしょうか.例えばSpin_Top_Sim_1内の記述でuLINK_1(1).voを初期条件として用いているなどによりますでしょうか.
  댓글 수: 1
Atsushi Ueno
Atsushi Ueno 2021년 12월 29일
それもSpin_Top_Sim_1の処理がなければ有り得ない動作なので、Spin_Top_Sim_1がvo_measure1の値を変更(初期化)していると断定できます。

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 ループと条件付きステートメント에 대해 자세히 알아보기

제품


릴리스

R2021a

Community Treasure Hunt

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

Start Hunting!