質問

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)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top