任何人都可以告诉我有关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()函数?
答案 0 :(得分:1)
正如您所注意到的,Matrix.Reshape将newChannels作为第一个参数。矩阵可以有多个通道,例如颜色通道(1表示灰度,3表示RGB)。 Reshape所做的是它重塑了矩阵的通道,列和行。
使用reshapeMatrix = A.Reshape(2, 8);
想要实现的目标可能是重新整形矩阵,使其具有2列和8行,但仍然是一个颜色通道。或者我错了吗?
如果这是你想要达到的目的,那么正确的方法是:
reshapeMatrix = A.Reshape(1, 8);
由于有16个元素和8行,列数将自动为2.通道数仍保持为1。
reshapeMatrix = A.Reshape(1, 16);
之所以有效,是因为您指定应该保留一个颜色通道。有16行,剩下的唯一选择就是有一列。