Если данные в электронной таблице содержат одно число на ячейку, просто импортируйте данные в двумерный массив. Команда 'reshape' может изменить размерность массива, но иногда бывает немного сложно изменить порядок расположения элементов так, как вы хотите. Этот код возьмет двумерный вектор M размера Rx (2C) и превратит его в трехмерный блок данных размером [R C 2], чередующийся по страницам в строках оригинала. По вашим номерам трудно сказать, что это работает, поэтому я использовал другой набор, который легче отслеживать.
M = [1 2 3 4
5 6 7 8];
M = reshape(M,[size(M,1) 2 size(M,2)/2]);
M = permute(M,[1 3 2])
Что приводит к:
M(:,:,1) =
1 3
5 7
M(:,:,2) =
2 4
6 8
Если данные в электронной таблице имеют два значения на ячейку, разделенные запятой (как предлагается в комментариях), они будут импортированы в MATLAB как серия массивов ячеек. Рассмотрим электронную таблицу с 4 ячейками (2x2) со следующими данными:
[ 1,2 ][ 3,4 ]
[ 5,6 ][ 7,8 ]
В MATLAB мы можем загрузить это, используя
[~,TXT]=xlsread('filename.xlsx');
И переменная TXT будет:
TXT =
2×2 cell array
{'1,2'} {'3,4' }
{'5,6'} {'7,8'}
Операция на клетках - это боль. Я не могу придумать способ сделать это без циклов «for», но как только вы это сделаете, назначить третье измерение будет легко.
M = zeros([size(TXT,1) size(TXT,2) 2]);
for ii = 1:size(TXT,1)
for jj = 1:size(TXT,2)
temp = sscanf(char(TXT(ii,jj)),'%f,%f');
M(ii,jj,:) = reshape(temp,[1 1 2]);
end
end
Для значений выше
M(:,:,1) =
1 3
5 7
M(:,:,2) =
2 4
6 8