for文にテキストボ​ックスの値を入れてル​ープさせる方法を教え​てください。

조회 수: 14 (최근 30일)
加藤 駿介
加藤 駿介 2022년 1월 5일
댓글: 加藤 駿介 2022년 1월 6일
私はfor文入る前にtest_dataの内容をそれぞれ代入し、for文で1つずつ回るのではないかと考えていました。しかしこれではY(from,to)の中にいれてしまうと(from,to)すべての場所に同じ値が入ってしまうという結果になりました。
Y =
0.0400 - 1.7992i 0.0400 - 1.7992i 0.0400 - 1.7992i 0.0400 - 1.7992i
0.0400 - 1.7992i 0.0400 - 1.7992i 0.0400 - 1.7992i 0.0400 - 1.7992i
0.0400 - 1.7992i 0.0400 - 1.7992i 0.0400 - 1.7992i 0.0400 - 1.7992i
0.0400 - 1.7992i 0.0400 - 1.7992i 0.0400 - 1.7992i 0.0400 - 1.7992i
Y(3,1)の場合は本来想定している結果はfrom3,to1の場合は0になるはずなのにほかの値と同じになってしまっています。
Y =
0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
0.0400 - 1.7992i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
なので、テキストボックスから値を取り出してfor文で回す方法が知りたいです。お願いします。

채택된 답변

Atsushi Ueno
Atsushi Ueno 2022년 1월 5일
편집: Atsushi Ueno 2022년 1월 5일
Y(from,to) = 0.0400 - 1.7992i のfromとtoの添え字が無く、fromやtoの行列全体を指定する事になるので:Y([1,2,2,3,3,4,1,2,3,4], [2,1,3,2,4,3,1,2,3,4]) = 0.0400 - 1.7992iとなります。これだと、1度でY(1:4,1:4)全てにスカラ値を代入してしまいます。for文で何度繰り返しても同じです。
② from_dataからfrom, to, r, x, bにコピーすると、コピー先はそれぞれ10行1列のベクトルになります。
fromの各要素にアクセスする場合はfrom(3,1)の様に書きます。1次元ベクトルなのでfrom(3)も可能です。(詳細は線形インデックスを参照) したがって、下記の様にプログラムを変更すべきです。
for ii = 1:6
Y(from(ii), to(ii)) = 1 / (r(ii) + ii * x(ii)) + ii * b(ii) / 2;
end
  댓글 수: 2
Atsushi Ueno
Atsushi Ueno 2022년 1월 5일
回答の一部に誤りがありました。
% 1度でY(1,2), Y(2,1), Y(2,3), Y(3,2), Y(3,4), Y(4,3), Y(1,1), Y(2,2), Y(3,3), Y(4,4)
% の全てにスカラ値を代入してしまいます。
は誤りで、Y([1,2,2,3,3,4,1,2,3,4], [2,1,3,2,4,3,1,2,3,4])のようなindexingだとY(1:4,1:4)全てに代入されます
詳細は下記の説明が詳しいです。一部を下記に抜粋します。
% 行列から散らばった要素を選択する方法について、しばしば混乱が生じます。
% 例えば、A から (2,1), (3,2), (4,4) の要素を抽出したいとします。
% A([2 3 4], [1 2 4]) という式では、思い通りにいきません。
% この図は、2つの下付き添字のインデックスがどのように機能するかを示しています。
% 行列から散在する要素を抽出するには、別のスタイルのインデックス付けが必要です。
加藤 駿介
加藤 駿介 2022년 1월 6일
返信遅れてすみません。
Y(from(ii),to(ii))の左辺を変えるのは思いつきませんでした。参考にします。
ご回答ありがとうございました。

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

추가 답변 (0개)

카테고리

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

제품


릴리스

R2021a

Community Treasure Hunt

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

Start Hunting!