Проблема преобразования символов в строки в Matlab.Какую функцию использовать? - PullRequest
4 голосов
/ 10 августа 2011
x = 1234     56789     7654

x (1) равно 1, x (2) равно 2 и т. Д. ... между ними 5 пробелов .. size (x) = 1 23 Одна строка с 23 столбцами, которые я пробовал использоватьnum2str, strcat, но я не могу забить цифры.y = num2str (x), y = strcat (x)

Я хочу, чтобы это было .. x (1) = 1234, x (2) = 56789, x (3) = 7654

Какую функцию я должен использовать для достижения вышеизложенного?

Ответы [ 5 ]

4 голосов
/ 10 августа 2011

Простым решением является использование sscanf:

x =' 1234     56789     7654'

sscanf(x, '%d')

ans =

    1234
   56789
    7654
2 голосов
/ 10 августа 2011

Есть несколько способов выполнить то, что вы хотите. Одним из них является strtok.

x = '1234     56789     7654';
[fst rest] = strtok(x,' ');
0 голосов
/ 10 августа 2011

Следующее создает массив ячеек строк, затем следует его применением sscanf.

b = regexp(x,'\d+','match');
y = cellfun(@(a) (sscanf(a,'%d')),b); 
0 голосов
/ 10 августа 2011

Просто чтобы добавить еще один ответ к смеси ...

y = textscan(x, '%d     %d     %d')
0 голосов
/ 10 августа 2011

STR2NUM хорошо подходит для этой задачи:

>> x = '1234     56789     7654';
>> x = str2num(x)'

x =

        1234
       56789
        7654
...