【问题标题】:Change the size of matrix?改变矩阵的大小?
【发布时间】:2016-05-06 17:46:24
【问题描述】:
我有一张图像要转换为大小为(n,m) 的二进制矩阵
我需要一个 MATLAB 函数来将此矩阵的大小重塑为 (n,n)。
否则,是否可以使图像的大小为(n,n)而不是初始(n,m)?
【问题讨论】:
标签:
image
matlab
image-processing
【解决方案1】:
其实很简单。假设您的矩阵是A 和n x m。我假设您想要 zero-pad 矩阵,这意味着额外的元素将设置为 0。您只需这样做:
[n,m] = size(A);
A(:,m+1:n) = 0;
第一行代码找到矩阵A 的行n 和列m。接下来,我们将从(m+1)th 列到nth 列的所有行都设为0,这实际上是一个n x n 矩阵。
示例运行
这是一个带有4 x 2 矩阵A 的示例,该过程要求我们更改大小以便A 为4 x 4。
>> A = rand(4,2)
A =
0.9575 0.9572
0.9649 0.4854
0.1576 0.8003
0.9706 0.1419
>> [n,m] = size(A);
>> A(:,m+1:n) = 0
A =
0.9575 0.9572 0 0
0.9649 0.4854 0 0
0.1576 0.8003 0 0
0.9706 0.1419 0 0
小提示
这假设行数大于列数...我假设这是您的要求。如果不是这种情况,那么上面的代码将不起作用。您可以使算法不可知,而您可以在具有最少条目的维度中对矩阵进行零填充,但我将把它留给您作为练习。