Преобразование 3d матрицы Matlab в 2d матрицу с индексами и значениями - PullRequest
0 голосов
/ 25 июня 2018

У меня есть 3D-матрица в MATLAB.Он имеет 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

Я хочу сохранить все значения этой трехмерной матрицы с их индексами в двухмерной переменной.

Это будет выглядеть примерно так

2-dimensional data format

Я пытался использовать функцию find(), но она возвращает несколько индексов и требует ввода значения, для которого необходимо рассчитать индексы.

Есть ли предопределенная функция MATLAB для этой проблемы?

Буду признателен за любую помощь.

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Я не верю, что для этого есть встроенная функция MATLAB, но это достаточно просто сделать самостоятельно:

sz = size(filtered_data);
[x,y] = meshgrid(1:sz(2),1:sz(1));
output = [x(:).';y(:).';reshape(filtered_data(:),[],sz(3)).'];
0 голосов
/ 25 июня 2018

Не так много загадок.Это просто факт изменения ваших данных и генерации индексов по размерам.

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),[]);

Просто заполните матрицу этими операциями.Также найдите время, чтобы ознакомиться с ними, для дальнейшего использования

...