在matlab中调整矩阵大小

时间:2017-11-12 10:22:46

标签: matlab matrix resize

我正在使用函数"resizem"扩展矩阵的大小,而不删除数据。最近,在使用该函数后,它向我发送一个错误,该函数不能使用double类型的整数。我试图在我的矩阵上使用abs().^2,但它没有用。

有没有其他功能可以做同样的事情?

注意:我需要数据不要改变,所以如果我有一个矩阵  A = [-1 0 2; 4 1 2]我希望它成为像这样的5x5矩阵:  A = [-1 -0.5 0 1 2; 4 2.5 1 1.5 2]

另外,我已经尝试了函数' imresize',并给了我与resizem相同的问题。 (我拥有两个工具箱,我的矩阵是double型)

2 个答案:

答案 0 :(得分:0)

如果A = [-1 0 2; 4 1 2]您可以执行A = [A, [1, 2; 1.5 2]]之类的操作来获取A = [-1 -0.5 0 1 2; 4 2.5 1 1.5 2]

答案 1 :(得分:0)

我会尝试去imresize(这是Image Processing Toolbox的一部分)。我从未使用过那些函数,但是看看你收到的错误,这与变量类型有关,新选项应该提供更多的灵活性。实际上,当resizem返回双精度输出时,imresize返回与输入相同类型的输出。

A = [-1 0 2; 4 1 2];
imresize(A,[2 5]);

该示例显示了如何使用它。我还测试了两种结果:

A = [-1 0 2; 4 1 2];

A_imr = imresize(A,[2 5]);
A_rem = resizem(A,[2 5]);

这是imresize的结果:

A_imr:

-1,08000000000000   -0,720000000000000  -1,77635683940025e-15   1,29600000000000    2,16000000000000
 4,24000000000000     2,82400000000000       1,00000000000000   1,48000000000000    2,08000000000000

这是resizem的结果:

A_rem :

-1  -1  0   2   2
 4   4  1   2   2

要进一步修改,请尝试使用scalemethod参数。例如,在imresize中,您需要指定适当的插值内核以实现平均。