【问题标题】:Concatenating part of multi-dimensional matrices in matlab在matlab中连接部分多维矩阵
【发布时间】:2013-12-12 00:22:47
【问题描述】:

我正在处理图像数据,我有 240 个图像,每个图像由 5 个大小为 231 x 384 的通道组成。该矩阵现在的大小为 (240,231,384,5),我希望将其设为 (231*240,384, 5)。我不能在不扭曲数据的情况下“重塑”它。我该怎么做?

【问题讨论】:

  • 为什么不直接reshape(data, 240*231,384,5)
  • 我不明白你为什么要这样做?第一个维度的均值在 ? 之后没有任何意义?
  • @Maria:你期望 M(2,:,:,:) 的输出是什么?第一张图片的第二行还是第二张图片的第一行?

标签: matlab matrix multidimensional-array reshape


【解决方案1】:

给定一个矩阵:

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

我猜你正在寻找的解决方案是上面 Luis 所建议的:

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

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

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

【讨论】:

    【解决方案2】:

    这是我对你想要做什么的猜测

    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
    

    【讨论】:

    • 正如 Daniel R 所说,请包括您正在寻找的示例输出。目前尚不清楚您要做什么。什么失真在谈论?你的数据是什么样的?您能否提供您期望的输出代码的一小部分?
    猜你喜欢
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多