2D矩阵到3D矩阵,行到[行,列]映射

时间:2019-08-19 12:54:05

标签: arrays matlab matrix vectorization

我有一个二维矩阵,在第一个维度上具有不同的通道,在第二个维度上具有时间采样。我想在第1维和第2维通道以及第3次采样中将其重新排列为3D矩阵。

必须根据特定映射来映射通道。现在,我正在使用for循环来执行此操作,但是什么是无循环解决方案?

N_samples = 1000;
N_channels = 64;

channel_mapping = reshape(1:64, [8 8]).';
% Results in mapping: (can also be random)
%      1     2     3     4     5     6     7     8
%      9    10    11    12    13    14    15    16
%     17    18    19    20    21    22    23    24
%     25    26    27    28    29    30    31    32
%     33    34    35    36    37    38    39    40
%     41    42    43    44    45    46    47    48
%     49    50    51    52    53    55    55    56
%     57    58    59    60    61    62    63    64

data = rand(N_channels, N_samples);

data_grid = NaN(8,8, N_samples);

for k = 1:N_samples
    tmp = data(:, k);
    data_grid(:, :, k) = tmp(channel_mapping);
end

0 个答案:

没有答案