2010-03-02 24 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

相關問題