2010-03-02 2 views
3

У меня есть функция библиотеки, которая принимает параметры как текстовую строку (это общая библиотека C с интерфейсом MATLAB). Я хочу назвать его с набором параметров, как это:Как создать ячейку строк из meshgrid в 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 

б =

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, как я могу создать нужную ячейку?

ответ

3

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

params = strcat({'-a '},int2str(a(:)),{' -b '},int2str(b(:))); 
+0

Принятая ответ и upvote, сэр, идем к вам! –

2

немного более простое решение:

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

Я думаю, что NUM2STR будет рисовать значения из матрицы '[a (:) b (:)]' в порядке столбцов, поэтому вам сначала придется перенести матрицу. Вы также можете использовать CELLSTR вместо STRCAT. – gnovice

+2

вы уверены в NUM2STR? выполните этот простой тест: 'num2str ([1 2; 3 4; 5 6], '% d \ n')' или 'num2str ([1 2; 3 4; 5 6], '% d% d')' чтобы соответствовать приведенному выше – Amro

+2

Это отличается от поведения FPRINTF/SPRINTF, поэтому я могу видеть, как можно подумать, что .. (сравните с 'sprintf ('% d \ n', [1 2; 3 4; 5 6])') – Amro

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