2010-03-02 20 views
3

我有一个库函数,它将参数作为文本字符串(它是一个带MATLAB前端的通用C库)。我想用这样一组参数来调用它:如何在MATLAB中使用meshgrid创建一个字符串单元格?

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

等等

我与meshgrid创造ab值:

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

其收益率:

一个=

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 

除了遍历ab,我怎么可以创建所需的细胞?

回答

3

你可以试试这个,使用INT2STRSTRCAT功能:

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

接受的答案,并给予好评,先生,去你的! –

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

相关问题