我在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矩阵的所有值及其索引存储到2维变量中。
这看起来像这样
我尝试使用find()
函数,但是它返回多个索引,并且需要您输入需要为其计算索引的值。
是否存在针对此问题的预定义MATLAB函数?
我将不胜感激。
答案 0 :(得分:3)
我不相信有内置的MATLAB函数可以做到这一点,但是这样做很容易:
sz = size(filtered_data);
[x,y] = meshgrid(1:sz(2),1:sz(1));
output = [x(:).';y(:).';reshape(filtered_data(:),[],sz(3)).'];
答案 1 :(得分:1)
没有多少神秘之处。这只是重塑数据并根据大小生成索引的事实。
rows=repmat(1:size(filtered_data,1),1,size(filtered_data,2));
cols=repelem(1:size(filtered_data,2),size(filtered_data,1));
data_time_frame1=reshape(filtered_data(:,:,1),1,[]);
data_time_frame2=reshape(filtered_data(:,:,2),1,[]);
更灵活的方法,
data_time_frame=reshape(filtered_data(:),size(filtered_data,3),[]);
只需使用这些操作填充矩阵。还需要一些时间来熟悉它们,以备将来参考