Octave / Matlab で多次元行列 A が与えられた場合、
すべての要素が k 番目の次元に沿ったインデックスに置き換えられる A と同じサイズの行列を取得する最も簡単な方法は何ですか?
つまり、行列の場合
A =
ans(:,:,1) =
0.095287 0.191905
0.226278 0.749100
ans(:,:,2) =
0.076826 0.131639
0.862747 0.699016
f(A,1) = となるような関数 f が欲しい
ans(:,:,1) =
1 1
2 2
ans(:,:,2) =
1 1
2 2
f(A,2) =
ans(:,:,1) =
1 2
1 2
ans(:,:,2) =
1 2
1 2
と
f(A, 3) =
ans(:,:,1) =
1 1
1 1
ans(:,:,2) =
2 2
2 2
また、与えられた疎行列 B
ゼロ以外の要素が k 番目の次元に沿ったインデックスに置き換えられた、同じサイズの別のスパース行列を取得する最も簡単な方法は何ですか? (上記と同じ問題ですが、非ゼロ要素のみ)
理想的には、オクターブ用に適切にベクトル化された方法を探しています (つまり、何も明示的にループしないことを意味します)。
明確化:疎行列の場合、どの時点でもフルサイズ(B)の行列を作成する必要のない解決策を探しています