2013-11-26 39 views
0

我正在处理图像数据,并且我有240个图像,每个图像由尺寸为231的5个通道贡献组成,共有384个。现在这个矩阵的大小是(240,231,384,5),我希望将其作为(231 * 240,384,5)。我不能在不扭曲数据的情况下“重塑”它。我该怎么做呢?在matlab中连接多维矩阵的一部分

+3

为什么不只是'重塑(数据,240 * 231,384,5)'? –

+0

我不明白你为什么想这样做?第一维的手段是什么意思? – Vuwox

+1

@Maria:你期望成为M(2,:,:)的输出结果?第一张照片的第二行或第二张照片的第一行? – Daniel

回答

0

这是我的猜测是你正在尝试做的

test = [1:16]; % sample data 
test1 = reshape(test, 4, 4); % rearrange to 4x4 
% this has a vertical arrangement which is prob not what you have 

[m, n] = size(test1); % get dims 
r = 2; % horizontal width/numb of cols 
% this prob closer to what you have 
test2 = test1(:,1:r)' % flip to horizontal order 
test3 = reshape(test2, m*r, 1) % rearrange to vertical 
+0

正如Daniel R所说,请包括您正在寻找的示例输出。目前尚不清楚你想要做什么。什么失真在说什么?你的数据是什么样的?你能给我们一小部分的代码与你期望的输出吗? – athypes

0

给定一个矩阵:

n1 = 240; n2 = 231; n3 = 384; n4 = 5; 
A = randn(n1, n2, n3, n4); 

我猜你正在寻找的解决方法是,由路易斯以上建议:

B = reshape(A, n1 * n2, n3, n4); 

C = reshape(permute(A, [2 1 3 4]), n1 * n2, n3, n4); 

否则,你必须更好地解释你的问题是什么。