他のすべてのエントリをサンプリングしたいMATLABの行列があります。
a =
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
そして私は欲しい:
result =
1 9
3 11
forループなしでこれを行うにはどうすればよいですか?
他のすべてのエントリをサンプリングしたいMATLABの行列があります。
a =
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
そして私は欲しい:
result =
1 9
3 11
forループなしでこれを行うにはどうすればよいですか?
多次元で自動的に行う方法はわかりませんが、次元ごとに指定してもよければ、Matlab のインデックス付けで十分です。
a(1:2:end,1:2:end)
これは、特定の例で機能するはずです。
result = a([1 3],[1 3]);
より一般的には:
result = a(1:2:size(a,1),1:2:size(a,2));
MATLABでのインデックス作成の詳細については、こちらのドキュメントをご覧ください。
samples_x = floor(linspace(1, size(a,1), new_Nx));
samples_y = floor(linspace(1, size(a,2), new_Ny));
new_a = a(samples_x,samples_y)