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

在matlab中调整矩阵大小并保持相同的值,matlab,matrix,reshape,image-resizing,Matlab,Matrix,Reshape,Image Resizing,我有一个包含分段区域索引的二维矩阵[n,m]。我需要在不丢失原始值的情况下,在matlab中将矩阵重塑或调整为任意大小[n',m']。换句话说,我需要扩展分段区域。我尝试使用reshpae,但它不起作用,因为刻度的高度和宽度必须相似。imresize不起作用,因为它会更改原始值 我想出了一个快速的办法。串联矩阵是一种扩展矩阵大小而不影响现有数据的方法: s = zeros(3,3); for x = 1:3 % just adds numbers so it can be studied

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

我想出了一个快速的办法。串联矩阵是一种扩展矩阵大小而不影响现有数据的方法:

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

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

我尝试在不使用循环的情况下解决它,如下所示:

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

你的意思是在现有矩阵中增加额外的行/列吗?我不明白你想要什么。你是不是在看零填充?在保持相同内容的同时扩展图像的边框?请更清楚地说明您的目标。您希望使用什么值填充扩展区域?假设您有10*10数据,并将其扩展到11*11,那么添加的21个值是什么?使用插值方法
imresize
。我认为您建议连接其他矩阵以达到所需的大小。实际上,我希望重塑矩阵并保持相同的值而不是相同的索引。使用
imresize
nearest
方法更容易。这将执行最近邻插值,这正是上面所做的。