У меня очень короткий и простой вопрос. Это то, что я имею дело с:Динамическое заполнение 3D-матрицы из 2D-матрицы
%% Load all samples
nazwa = dir('*.asc');
temp = zeros(1,1);
A = zeros(1,1,1);
for i = 1:25
filename = nazwa(i).name;
temp = importfile(filename);
A(:,:,i) = temp;
end
temp
матрица 4096x2, и я хочу, чтобы иметь 4096x2x25 матрицу A
в качестве результата. С помощью этого кода я получаю ошибку Assignment has more non-singleton rhs dimensions than non-singleton subscripts
. Я знаю, что я могу использовать ячейки или создавать большую временную матрицу, которая будет содержать все данные сразу, а затем преобразовать их в 3D-матрицу, но я хочу знать, что не так с моим мышлением. Это индексирование? Я нашел аналогичную проблему: http://www.mathworks.com/matlabcentral/answers/57275-adding-values-to-3d-matrix, но это не совсем для меня.
+1 для вас, юг, это действительно сработало. Не могли бы вы рассказать мне, каковы правила изменения размера матрицы в цикле? Раньше я делал подобный материал, предварительно создавая матрицы, как здесь, - с одиночной нулевой матрицей, и у меня никогда не было такой ошибки. –
"подобные вещи"? Как что? В общем, если вы хотите получить доступ к чему-то вроде A (:, N), тогда A должен быть предварительно назначен. –
'Yssmini = нули (1,1); Yssmin = нули (1,1); для i = 1: размер (GROOVES_VALUES, 2)% находит точный индекс минимумов в каждом столбце Yss Yssmin (1, i) = min (Yss3d (:, 1, i)); j = find (Yss3d (:,:, i) == Yssmin (1, i)); Yssmini (1, i) = j; end. Вот, например, я предварительно разделил Yssmin на одну по отдельности матрицу, и код все еще работает. –