2017-06-05 495 views
0

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

+0

你的意思是像添加额外的行/列到现有的矩阵? – Numbers682

+1

我不明白你想要什么。你是否正在寻找零填充?在保持相同内容的同时扩展图像的边界?请更清楚你的目标。 – rayryeng

+0

你想用什么值填充扩展区域?假设你有10 * 10的数据,并将它们扩展到11 * 11,那么添加的21个数值是多少? – Anthony

回答

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 

让我知道是否需要另一种解决方案。这很简单,但我不明白你想要什么。

+0

我想你建议连接额外的矩阵,以达到desried大小。实际上,我希望重塑矩阵并保持相同的值不是相同的索引。 – DYEZ

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 
+0

通过'nearest'方法使用'imresize'更容易。这将执行最近邻居插值,这正是您在上面做的。 – rayryeng

相关问题