Строковый массив ячеек MATLAB без цикла - PullRequest
0 голосов
/ 26 декабря 2018

Я использую цикл для создания массива ячеек.Содержит строки от А1 до А10.Есть ли способ перебора без использования цикла?

a = cell( 10, 1 );
for i = 1 : length( a )
   a{i} = [ 'A', num2str( i ) ];
end

a = 

    'A1'
    'A2'
    'A3'
    'A4'
    'A5'
    'A6'
    'A7'
    'A8'
    'A9'
    'A10'

Ответы [ 2 ]

0 голосов
/ 26 декабря 2018

Если у вас R2017a или новее, рассмотрите возможность использования строковых массивов вместо массива ячеек векторов символов.Вы можете создать свой строковый массив, используя

"A"+(1:10)'
0 голосов
/ 26 декабря 2018

Я предполагаю, что вы хотите построить a без цикла.Пусть N = 10 согласно вашему примеру.

Приближение 1

a = sprintf('A%i ', 1:N);
a = a(1:end-1);
a = strsplit(a).';

Это строит вектор символов с пробелом после каждого числа, удаляет последний пробел, разбивает на пробелы и транспонирует.

Подход 2

Другой подход:

a = deblank(cellstr(strcat('A', strjust(num2str((1:10).'), 'left'))));

Это объединяет 'A' с числами для формирования двумерного массива символов с некоторыми пробелами;перемещает пробелы в каждом ряду вправо;преобразует каждый ряд в ячейку;и удаляет завершающие пробелы в каждой ячейке.

...