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

11 Ansichten (letzte 30 Tage)
加藤 駿介
加藤 駿介 am 5 Jan. 2022
Kommentiert: 加藤 駿介 am 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文で回す方法が知りたいです。お願いします。

Akzeptierte Antwort

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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu ループと条件付きステートメント finden Sie in Help Center und File Exchange

Produkte


Version

R2021a

Community Treasure Hunt

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

Start Hunting!