Как я могу создать ячейку строк из сетки в MATLAB? - PullRequest
3 голосов
/ 02 марта 2010

У меня есть библиотечная функция, которая принимает параметры в виде текстовой строки (это общая библиотека C с интерфейсом MATLAB) Я хочу назвать его с набором параметров, таких как:

'-a 0 -b 1'
'-a 0 -b 2'
'-a 0 -b 3'
'-a 1 -b 1'
'-a 1 -b 2'
'-a 1 -b 3'

и т.д ...

Я создаю значения a и b с помощью meshgrid:

[a,b] = meshgrid(0:5, 1:3);

, что дает:

a =

 0     1     2     3     4     5
 0     1     2     3     4     5
 0     1     2     3     4     5

b =

 1     1     1     1     1     1
 2     2     2     2     2     2
 3     3     3     3     3     3

А теперь я хочу как-то поместить их в ячейку строк:

params = {'-a 0 -b 1'; -a 0 -b 2 '; и т.д ...}

Я пытался использовать sprintf, но это только объединяет их

sprintf('-a %f -b %f', a ,b)

ans =

-a 0.000000 -b 0.000000-a 0.000000 -b 1.000000-a 1.000000 -b 1.000000-a 2.000000 -b 2.000000-a 2.000000 -b 3.000000-a 3.000000 -b 3.000000-a 4.000000 -b 4.000000-a 4.000000 -b 5.000000-a 5.000000 -b 5.000000-a 1.000000 -b 2.000000-a 3.000000 -b 1.000000-a 2.000000 -b 3.000000-a 1.000000 -b 2.000000-a 3.000000 -b 1.000000-a 2.000000 -b 3.000000-a 1.000000 -b 2.000000-a 3.000000 -b 1.000000-a 2.000000 -b 3.000000

Помимо создания циклов по a и b, как создать нужную ячейку?

Ответы [ 2 ]

3 голосов
/ 03 марта 2010

Вы можете попробовать это, используя функции INT2STR и STRCAT :

params = strcat({'-a '},int2str(a(:)),{' -b '},int2str(b(:)));
2 голосов
/ 03 марта 2010

Несколько более простое решение:

strcat(num2str([a(:) b(:)],'-a %d -b %d'), {})
...