多次元行列での非ゼロ要素の算出方法
2 views (last 30 days)
Show older comments
ns=5;
A=zeros(ns,ns,ns);
for dim=1:ns
n1=randi([1 ns],1,1);
n2=randi([1 ns],1,1);
n3=randi([1 ns],1,1);
A(n1,n2,n3)=1;
end
上記によって算出される変数Aにおいて,
「1」を持つ値の座標(x,y,z)を算出する方法を教えて頂きたいです.
for文を用いずに算出したいです.
宜しくお願い致します.
1 Comment
Atsushi Ueno
on 15 Feb 2022
表題:「非ゼロ要素の算出方法」
本文:「「1」を持つ値の座標(x,y,z)を算出する方法」
1を持つ値と非ゼロ要素は1対1の関係ではありません。
2を持つ値も3をもつ値も非ゼロ要素です。
Answers (1)
Atsushi Ueno
on 14 Feb 2022
下記のコマンドで「1」を持つ値の座標(x,y,z)を算出出来ます。find関数の出力は線形インデックスなのでind2sub関数で3次元の添え字に変換します。2次元行列が対象の場合ind2sub関数は不要です。
[x,y,z] = ind2sub(size(A),find(A == 1));
ns=5;
A=zeros(ns,ns,ns);
for dim=1:ns
n1=randi([1 ns],1,1);
n2=randi([1 ns],1,1);
n3=randi([1 ns],1,1);
A(n1,n2,n3)=1;
[n1,n2,n3] % 1を設定した座標を表示する
end
[x,y,z] = ind2sub(size(A),find(A == 1)); % 「1」を持つ値の座標(x,y,z)を算出
[x y z]
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!