Я пытаюсь заполнить пустой массив ячеек смешанными числовыми и строковыми данными для последующей записи в Excel и столкнулся с проблемой. Следующий MCVE должен воспроизвести проблему:
Во-первых, я создаю массив ячеек и устанавливаю верхний левый элемент в пустую строку. Все идет нормально:
xls_array = cell(7,6);
xls_array{1,1} = '';
Затем мне нужно заполнить первую строку и первый столбец массива соответствующими заголовками. Это переменные (массивы ячеек), созданные в другом месте кода, но для целей MCVE я создал несколько искусственных:
col_headers = {'Channel 1';'Channel 2';'Channel 3';'Channel 4';'Channel 5'};
xls_array(1,2:end) = col_headers';
row_headers = {'Var A';'Var B';'Var C';'Var D';'Var E';'Var F'};
xls_array(2:end,1) = row_headers;
Все идет нормально. Теперь мне нужно добавить фактические данные в массив ячеек, и здесь возникает проблема. Опять же, для целей MCVE я сгенерировал некоторые случайные данные:
data = rand(6,5);
xls_array{2:end,2:end} = data;
Это дает мне следующее сообщение об ошибке:
>> xls_array{2:end,2:end} = data;
error: invalid dot name structure assignment because the structure array is empty. Specify a subscript on the structure array to resolve.
Если я попробую обычные скобки вместо фигурных скобок, это не приведет к ошибке, но и не даст ожидаемого результата:
xls_array(2:end,2:end) = data;
>> xls_array{2,2}
ans =
0.326180 0.169640 0.381373 0.416490 0.283456
0.350000 0.366084 0.409047 0.619715 0.962095
0.526219 0.466591 0.553932 0.930187 0.460585
0.983679 0.324129 0.964619 0.080852 0.786360
0.069995 0.835966 0.266789 0.673177 0.796602
0.741368 0.233794 0.022568 0.012975 0.248514
то есть он скопировал весь числовой массив data
в каждый элемент массива ячеек xls_array(2:end,2:end)
.
Вместо этого я хочу скопировать data
в оставшиеся пустые ячейки массива ячеек, т.е. data(1,1)
должно быть в xls_array{2,2}
, data(1,2)
в xls_array{2,3}
и т. д.
Я также пробовал следующее, безрезультатно:
>> xls_array{2:end,2:end}(:) = data;
error: a cs-list cannot be further indexed
Кто-нибудь может помочь?
for
и проходить каждый элементdata
по одному, но наверняка должен быть более элегантный/эффективный способ? - person am304   schedule 28.08.2019