2013-10-03 4 views
7

Привет Я пытаюсь создать массив ячеек строк с:создать массив ячеек строк MatLab

data = ['1';'2';'3';'4';'5';'6';'7';'8';'9';'10';'11';'12';'13';'14';'15';'16';'17';'18';'19';'20';]; 

где я ожидал массив ячеек 25 элементов. но я получаю:

length(data) 

= 33 

так очевидно цифры 12,13 и т. д. считаются 2 битами.

Мой вопрос в том, как я могу обеспечить, чтобы массив ячеек имел длину 20? также функция, которую я помещаю в массив ячеек, должна быть массивом ячеек строк, даже если я использую ints!

+0

Строки - это массивы символов в Matlab. Объединение таких строк приводит к одной длинной строке. Помимо этого: длина, размер и т. Д. Размер отчета в количестве элементов вместо байтов. – jpjacobs

+0

Возможный дубликат [Создать массив строк] (http://stackoverflow.com/questions/7100841/create-an-array-of-strings) –

ответ

16

Вам нужно сделать:

data = {'1';'2';'3';'4';'5';'6';'7';'8';'9';'10';'11';'12';'13';'14';'15';'16';'17';'18';'19';'20';}; 

Использование {}. Они образуют массив ячеек.

+0

, конечно, моя ошибка! – brucezepplin

+0

Сэр, ты спас меня от вечного страдания. Спасибо. –

11

Вы можете использовать {} вместо [] построить клетку, или вы можете использовать strsplit построить произвольную длину ячейки строк, представляющих числа от 1 до N:

data = strsplit(num2str(1:N)); 

Update: Самый быстрый способ сделать это сейчас с незарегистрированной sprintfc функции (обратите внимание на «с» на конце), который печатает каждый элемент его собственной ячейки:

>> A = sprintfc('%g',1:20) 
A = 
    Columns 1 through 11 
    '1' '2' '3' '4' '5' '6' '7' '8' '9' '10' '11' 
    Columns 12 through 20 
    '12' '13' '14' '15' '16' '17' '18' '19' '20' 
>> which sprintfc 
built-in (undocumented) 
+0

или 'data = arrayfun (@ (ii) ii, 1: N, 'uni', false)' –

+1

@GuntherStruyf: Закрыть! Это не дает строк. Я думаю, вы имели в виду 'data = arrayfun (@ num2str, 1: N, 'uni', false)'. ;) – chappjc

+0

или 'cellfun (@ num2str, num2cell (1: N), 'uni', false)'. Так много возможностей! – chappjc

Смежные вопросы