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

16 views (last 30 days)
加藤 駿介
加藤 駿介 on 5 Jan 2022
Commented: 加藤 駿介 on 6 Jan 2022
私は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文で回す方法が知りたいです。お願いします。

Accepted Answer

Atsushi Ueno
Atsushi Ueno on 5 Jan 2022
Edited: Atsushi Ueno on 5 Jan 2022
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 Comments
Atsushi Ueno
Atsushi Ueno on 5 Jan 2022
回答の一部に誤りがありました。
% 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つの下付き添字のインデックスがどのように機能するかを示しています。
% 行列から散在する要素を抽出するには、別のスタイルのインデックス付けが必要です。
加藤 駿介
加藤 駿介 on 6 Jan 2022
返信遅れてすみません。
Y(from(ii),to(ii))の左辺を変えるのは思いつきませんでした。参考にします。
ご回答ありがとうございました。

Sign in to comment.

More Answers (0)

Categories

Find more on ループと条件付きステートメント in Help Center and File Exchange

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!