行列への代入について
130 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
point=[1 2;2 3;3 2; 1 3];
for i=1:size(point,1)
M(point(i,1),point(i,2))=1;
end
3×3のゼロ行列があったとします。そこの任意の座標に1という値を代入したいときどのようにすればよいでしょうか。
例えば、座標(1,2), (2, 3), (3, 2), (1, 3)に1という値を代入したいとします。
その場合、上のコードにあるように、for文で一つずつ代入すれば求める行列を得ることができます。
これをfor文を使わず行うことは可能でしょうか。
例えば、行列のなかで、ある条件を満たす座標は、for文を使って探索せずとも、find(M==1)などを使えば求めることができると思います。
このように、関数や代入法を使ってfor文を回避するようなコードを想像しています。よろしくお願いいたします。
0 Kommentare
Akzeptierte Antwort
Tohru Kikawada
am 5 Mai 2019
Bearbeitet: Tohru Kikawada
am 5 Mai 2019
線形インデックスを使うのがよいかもしれません。
point=[1 2;2 3;3 2; 1 3];
M=zeros(3,3);
M(sub2ind(size(M),point(:,1),point(:,2)))=1;
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!