7

他のすべてのエントリをサンプリングしたいMATLABの行列があります。

a =

     1     5     9    13
     2     6    10    14
     3     7    11    15
     4     8    12    16

そして私は欲しい:

result =

     1     9    
     3    11    

forループなしでこれを行うにはどうすればよいですか?

4

4 に答える 4

12

多次元で自動的に行う方法はわかりませんが、次元ごとに指定してもよければ、Matlab のインデックス付けで十分です。

a(1:2:end,1:2:end)
于 2009-11-24T07:03:19.147 に答える
5

これは、特定の例で機能するはずです。

result = a([1 3],[1 3]);

より一般的には:

result = a(1:2:size(a,1),1:2:size(a,2));

MATLABでのインデックス作成の詳細については、こちらのドキュメントをご覧ください。

于 2009-11-24T06:21:55.487 に答える
1
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)
于 2011-10-28T17:41:47.170 に答える