0

Matrix Reshape(int newChannels、int newRows)関数について誰か教えてもらえますか?引数newChannelsとはどういう意味ですか?以下の私のコード

Matrix<Double> A = new Matrix<Double>(4, 4);
Matrix<Double> reshapeMatrix;
reshapeMatrix = A.Reshape(1, 16);

このコードは正しく機能します。しかし

 reshapeMatrix = A.Reshape(2, 8);

このコードは正常に実行されますが、reshapeMatrixのサイズが正しくなく、reshapeMatrixデータを使用できません。

なぜこれが起こるのか誰かが説明できますか?任意のサイズの行列にreshape()関数を使用するにはどうすればよいですか?

4

1 に答える 1

1

お気づきのように、Matrix.Reshape は最初の引数として newChannels を取ります。マトリックスには、たとえばカラー チャネル (グレースケール用に 1 つ、RGB 用に 3 つ) など、複数のチャネルを含めることができます。Reshape が行うことは、マトリックスのチャネル、列、および行の両方を再形成することです。

あなたが達成したいことreshapeMatrix = A.Reshape(2, 8);は、おそらくマトリックスを再形成して、2 列と 8 行を持ちますが、それでも 1 つのカラー チャンネルを持つようにすることです。それとも私が間違っていますか?

それがあなたが達成したいことである場合、それを行う正しい方法は次のとおりです。

reshapeMatrix = A.Reshape(1, 8);

16 要素と 8 行があるため、列数は自動的に 2 になります。チャンネル数は 1 のままです。

機能する理由reshapeMatrix = A.Reshape(1, 16);は、1 つのカラー チャネルを維持する必要があることを指定したためです。16 行の場合、残っている唯一のオプションは 1 列にすることです。

于 2013-03-28T15:38:06.310 に答える