2013-06-06 3 views
2

Я хочу создать контейнер (массив, вектор, ... я не знаю разницу между ними в Matlab) строк. Я хочу использовать его для отображения и главным образом печатать файлы. В C++ я бы что-то вроде:Вектор/массив строк в MatLab

std::vector<std::string> str; 
str.push_back("Test1"); 
str.push_back("Test2"); 
str.push_back("Test3"); 

for(unsigned int i = 0; i < str.size(); i++) 
{ 
    printf("%s\n", str[i].c_str()); 
} 

Мой вопрос заключается в том: Как я могу достичь чего-то подобное в Matlab, или это вообще возможно. Я пробовал несколько вещей, которые я нашел здесь и там, но ничего не работает. Вот вещи, которые я пытался:

str = ['Test1' 'Test2' 'Test3']; 

str = ['Test1', 'Test2', 'Test3']; 

str = ['Test1'; 'Test2'; 'Test3']; 

ответ

5

Использование { и } (клеточные массивы), в противном случае вы будете просто конкатенации строк.

str = {'test1', 'test2', 'LongerTestString'}; 

for ii = 1:length(str); 
    disp(str{ii}); 
end 
+2

строки являются массивами символов, массив ячеек может содержать несколько массивов (разной длины), таким образом, он может содержать несколько строк. Матрица также может содержать строки (одной длины) в своих строках/столбцах, но массив ячеек намного лучше подходит imo. –

+0

@GuntherStruyf Я применил свой ответ, чтобы проиллюстрировать это. – Nick

+0

Да, ответ в порядке, я просто хотел объяснить, как хранятся данные и каковы параметры при работе со строками/символами. –

0

Дополнением Ник ответ (потому что cellfun весело :)):

str = {'test1', 'test2', 'LongerTestString'}; 
cellfun(@disp, str) 
+0

Я согласен с вами в том, что они забавные, однако их трудно отладить. – Nick

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