MATLAB пустая ячейка (n, m) массив строк? - PullRequest
5 голосов
/ 17 января 2012

Какой самый быстрый способ создать пустой массив ячеек из строк?

cell(n,m)

создает пустой массив ячеек double.

Как насчет аналогичной команды, но при создании пустых строк?

Ответы [ 4 ]

12 голосов
/ 17 января 2012

Зависит от того, чего вы действительно хотите достичь. Я думаю, что самый простой способ будет:

repmat({''},n,m);
7 голосов
/ 17 января 2012

Назначение всем элементам ячейки с помощью оператора двоеточия сделает работу:

m = 3; n = 5;
C = cell(m,n);
C(:) = {''}
1 голос
/ 14 февраля 2019

Это очень старая запись, но я хотел бы добавить подход, который может работать. Я не уверен, работает ли он в более ранней версии MATLAB. Я пробовал в версии 2018+, и это работает. Вместо использования remat кажется еще более удобным и интуитивно понятным запускать массив строк из ячеек следующим образом:

C(1:10) = {''} % Array of empty char

И тот же подход можно использовать для генерации массива ячеек с другими типами данных

C(1:10) = {""} % Array of empty string
C(1:10) = {[]} % Array of empty double, same as cell(1,10)

Но будьте осторожны со скейлерами

C(1:10) = {1} % an 1x10 cell with all values = {[1]}
C(1:10) = 1 % !!!Error
C(1:10) = '1' % !!!Error
C(1:10) = [] % an 1x0 empty cell array
1 голос
/ 17 января 2012

Массив ячеек, созданный ячейкой (n, m), содержит пустые матрицы, а не двойные.Если вам действительно нужно предварительно заполнить массив ячеек пустыми строками

test = cell(n,m);
test(:) = {''};
test(1,:) = {'1st row'};
test(:,1) = {'1st col'};
...