首页 > 解决方案 > 将 3d matlab 矩阵重塑为具有索引和值的 2d 矩阵

问题描述

我在 MATLAB 中有一个 3D 矩阵。它有 3 行、4 列和 2 个时间范围。请看数据集:

>> size(filtered_data)
ans =
 3     4     2

>> filtered_data
filtered_data(:,:,1) =
 15     22     19     16
 15     15     13     17
 19     20     17     17

filtered_data(:,:,2) =
 14     17     14     10
 18     19     11     18
 16     15     14     17

我想将此 3D 矩阵的所有值及其索引存储到二维变量中。

这看起来像这样

二维数据格式

我尝试使用该find()函数,但它返回多个索引,并且它要求您输入需要计算索引的值。

这个问题有预定义的 MATLAB 函数吗?

我将不胜感激。

标签: matlabtransformreshapematrix-indexing

解决方案


我不相信有一个内置的 MATLAB 函数可以做到这一点,但自己做很容易:

sz = size(filtered_data);
[x,y] = meshgrid(1:sz(2),1:sz(1));
output = [x(:).';y(:).';reshape(filtered_data(:),[],sz(3)).'];

推荐阅读