マトリックスを持つことを検討してください。この行列から、すべての行から同じ数の要素を選択します。行列がでnxn
あり、各行からm
要素(m<n
)を取得するとします。
mxm
この選択した要素を使用してマトリックスを作成します。すべての行に、元のマトリックスから取得した要素を配置します(もちろん同じ行インデックス)。
これを達成するための最良の方法は何ですか?
ありがとうございました
マトリックスを持つことを検討してください。この行列から、すべての行から同じ数の要素を選択します。行列がでnxn
あり、各行からm
要素(m<n
)を取得するとします。
mxm
この選択した要素を使用してマトリックスを作成します。すべての行に、元のマトリックスから取得した要素を配置します(もちろん同じ行インデックス)。
これを達成するための最良の方法は何ですか?
ありがとうございました
これを実現する1つの方法をここに示します。遊ぶための配列a
を定義します...
a = randi(6,6);
b = a([1 3 5],[2 4 6])
これは、ある行列から別の行列に行と列を選択するためのインデックスベクトルの使用を示しています。インデックスとして使用するベクトルを指定できるかどうかに依存します。次のように書くこともできます。
c = a(1:2:end,2:2:end)
さて、あなたが「最良の方法」とはどういう意味かを教えてくれれば、私たちもそれを伝えることができるかもしれません!
編集
だから私はもう一度質問を読みました、それは「最高」とは「最速」を意味するようです。私はこの種の操作の速度を測定することを心配したことはありません。これよりもはるかに賢い答えを提供する本物のMatlabエキスパートの1人に興味を持って待っています。
もちろん、最速の方法は、部分行列をまったく作成せずに、元の行列の要素を操作することです。あなたのアルゴリズムが部分行列の構築を回避するように適応できるかどうかは私にはわかりません。