2014-09-03 77 views
1

我使用num2str來打印整數數組。我的問題是,格式%d,(通知沒有標誌或字段寬度)不會產生逗號分隔值的列表,如我所料。num2str爲整數格式設置恆定寬度

相反,它似乎通過引入空格來強制所有元素的寬度相同。我想擺脫這些空間。例如:

>> num2str(randi(10,1,10),'%d,') 
7, 8,10,10, 2, 2, 7, 1, 6, 6, 

>> num2str(randi(10,1,10),'%d,') 
9,5,4,7,8,6,4,2,6,3, 

在第一個例子,你可以看到,所有的元素都爲2的寬度 - 這是所有元素中最大的寬度,但我寧願輸出列表緊湊:7,8,10,10,2,2,7,1,6,6,。在第二個示例中,最大寬度爲1,並且沒有引入空格。我不明白爲什麼Matlab會強制所有元素具有相等的字段長度。

+1

能否downvoter請解釋一下? – Sheljohn 2014-09-03 11:58:54

+0

也許這個例子可能會更好,也就是說爲什麼有兩個例子,而不是陳述你產生了什麼結果和你想要的結果,並指定它們之間的差異?即:我使用這行代碼''num2str(randi(10,1,10),'%d')''並得到這個輸出''7,8,10,10,2,2,7,1 ,6,6,''你可以看到1位數字和分隔符之間的空格,但是我想擁有7,8,10,10,2,2,7,1,6,6 ''。我怎麼能得到這個?爲了重現這個問題,你需要幸運地畫一個''10'',那麼最好從1到15畫數字。 – Nras 2014-09-03 12:42:50

+0

@Nras,現在好點了嗎? – Sheljohn 2014-09-03 12:55:07

回答

2

num2str計算向量的最大值,並填充具有較少數字的空白數字(在命令窗口中鍵入edit num2str以查看源代碼)。

嘗試sprintf代替,

sprintf('%d,', randi(1000,1,10)) 
+0

謝謝:)這就是我想要的 – Sheljohn 2014-09-03 12:03:23