MATLAB で行列をサンプリングするにはどうすればよいですか?
-
21-09-2019 - |
質問
MATLAB に行列があり、そこから 1 つおきのエントリをサンプリングしたいと考えています。
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 でのインデックス作成の詳細については、ドキュメントを参照してください。 ここ.
私は今日これを見つけました。 A
は、すべての要素サンプリング、元の行列である。
Adown=downsample(downsample(A,s)',s)'
このダウンサンプルマトリックスは、垂直、転置は、次いで、サンプル直交する方向は、次にバック転置。
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)
所属していません StackOverflow