matlabで行列の行数を半分に減らす最良の方法は何ですか?matlabで行列の行数を半分に減らすにはどうしたらいいですか?
次のコマンドは何をしていますか?
mymatrix = mymatrix(1:2:end,:);
もっと良い方法がありますか?
matlabで行列の行数を半分に減らす最良の方法は何ですか?matlabで行列の行数を半分に減らすにはどうしたらいいですか?
次のコマンドは何をしていますか?
mymatrix = mymatrix(1:2:end,:);
もっと良い方法がありますか?
短い答えこれは、行列のすべての2番目の行を最初のもの(すべての奇数行)から開始し、おそらく最も簡単な方法であるとみなしています。 @Sardar_Usama
長いバージョン
end
からのコメントに基づいて、追加された清澄化は、所与の次元の配列の終わりを意味するMATLAB内部コマンドです。 size(var,dim)
にほぼ相当します。
実際にはmymatrix(1:2:end,:)
はmymatrix(1:2:size(mymatrix,1),:)
に書き直すことができます。実際に1:2:size(mymatrix,1)
を見ると、これは選択している行です。 1, 3, 5, etc
。実際にそこに必要な行を指定することができますが、いくつかの例があります。
1:floor(end/2); % first 'half'
floor(end/2)+1:end; % second 'half'
1:3:end; % every third element
1:2:floor(end/2); % every second element in the first 'half'
奇数長の問題を避けるためにfloor()
が追加されました。その場合、「半分」はちょうど半分ではなく、むしろおよそ半分である。あるいは、奇数長の半分をどのように定義するかによって、ceil()
になります。
なぜn行数を数えてから最初のn/2行を選択しないのですか? – anonymous
正解は**毎秒を除くすべての行** –
'end + 1:end;'は後半ではありません。そして、 '1/end/2;'は 'end/2'が整数でないので警告を生成する可能性があります。 –
これはおそらく最も簡単な方法です。はい。 – Suever
@Suever、そのコマンドは実際に何をしていますか? – anonymous
与えられたコマンドは、最初の行から2行おきに保存されています。だからそれは間に行を投げ捨てている。 「最良の」方法は、破棄された情報が持つ価値または役割によって異なります。これは縮小するイメージですか?その場合は、行を破棄する前にピクセル値を補間することをお勧めします。行数を減らす他にも多くの方法があります(たとえば、上半分を取るなど)。「ベスト」は、あなたが達成したいことが文脈でわかるまで、あまり定義されていません。 – jez