2012-11-08 34 views

回答

6

就像Colin提到的,一個選項是使用num2str將數字轉換爲字符串,手動連接所有字符串並將最終結果輸入到disp。不幸的是,它可能會非常尷尬和乏味,尤其是當你有很多數字要打印時。

相反,您可以利用sprintf的力量,這在MATLAB中非常類似於C編程語言。這會產生更短,更優雅的語句,例如:

disp(sprintf('The new values of x and y are %d and %d respectively', x, y)) 

您可以使用格式說明符控制如何顯示變量。例如,如果x不一定是整數,則可以使用%.4f而不是%d

編輯:像喬納斯指出的,你也可以用fprintf(...)而不是disp(sprintf(...))

+1

+1非常整齊。我可能會從現在開始這樣做:-) –

+2

@ColinTBowers:您可以使用'fprintf(...)'而不是'disp(sprintf(...))'。減少打字:) – Jonas

+0

@Jonas +1,我也把它放入我的答案中。 –

5

嘗試:

disp(['The new values of x and y are ', num2str(x), ' and ', num2str(y), ', respectively']); 

實際上,你可以省略逗號太多,但恕我直言,他們使代碼更易讀。

順便說一下,我在這裏所做的是將5個字符串連接在一起形成一個字符串,然後將該單個字符串送入disp函數。請注意,我基本上使用與數字矩陣相同的語法連接字符串,即[x, y, z]。我能做到這一點的原因是matlab內部將字符串存儲爲數字行向量,每個字符表示一個元素。因此,上述操作實質上是將5個數字行向量水平連接起來!

還有一點:你的代碼失敗,因爲matlab把你的num2str(x)當作一個字符串,而不是一個函數。畢竟,你可能合法地想要打印「num2str(x)」,而不是使用函數調用來評估它。在我的代碼中,第一個,第三個和第五個字符串被定義爲字符串,而第二個和第四個字符串是評估爲字符串的函數。

相關問題