在matlab中调整矩阵的大小并保持相同的值

时间:2017-06-05 16:02:52

标签: matlab matrix reshape image-resizing

我有一个包含分段区域索引的2维矩阵[n,m]。我需要将matlab中的矩阵重新整形或调整为任意大小[n',m'],而不会丢失原始值。换句话说,我需要扩展分段区域。我尝试使用reshpae,但它没有用,因为高度和宽度的比例必须相似。 imresize不起作用,因为它改变了原始值。

2 个答案:

答案 0 :(得分:0)

我想出了一些快速的东西。连接矩阵是扩展矩阵大小而不会弄乱现有数据的一种方法:

s = zeros(3,3);
for x = 1:3 % just adds numbers so it can be studied
    s(:,x) = x;
end
t = [s, zeros(3,3)]; % adds a 3 by 3 matrix to the right
u = [s; zeros(3,3)]; % adds a 3 by 3 matrix below
v = [t; zeros(3,6)]; % adds a 3 by 6 matrix below t matrix

如果需要其他解决方案,请告诉我。这很简单,但我不明白你想要什么。

答案 1 :(得分:0)

我尝试解决它而不使用循环,如下所示:

function m1=reshapez(m,sz)

 sa = sz(1) / size(m,1);      % height scale between original matrix and desired one  
 sb = sz(2) / size(m,2);      % width scale between original matrix and desired one  
 a2 = ceil([1:sz(1)]./sa);    % corresponding indices (x) of the desired matrix in the original one
 b2 = ceil([1:sz(2)]./sb);    % corresponding indices (y) of the desired matrix in the original one
 m1 = m(a2,b2);               % desired matrix