2014-04-18 75 views
0

我遇到了一些麻煩自動化MATLAB腳本應該提示輸入變量,他們有興趣,以及他們想要的日期範圍內的用戶。然後,我希望腳本在他們最終加載的文件的命名約定中連接他們的答案。自動化串和數字拼接

變量=輸入( '請的利益輸入變量');

%TEMP

開始=輸入( '請陳述的形式YYMMDD開始日期:');

%130418

ENDDATE =輸入( '請陳述的形式YYMMDD結束日期:');

%140418

文件= sprintf的( '%s_dailydata_%D_%d.csv',變量,啓動,結束日期);

%,所以我想 '文件' 將如下所示:temp_dailydata_130418_140418.csv

VARDATA =負載(文件);

表示日期的兩個數字不會引起任何問題,但「變量」是字符串的事實是。我知道,如果我把撇號之前和之後的「溫度」,當我promted,它會工作,但我必須假設,最終用戶不會知道做到這一點。我試圖把花括號放在'請輸入你的變量..',但這也沒有幫助。顯然這種方法假定請求的日期存在於文件名中。 任何人都可以提供任何建議嗎?也許sprintf函數在這裏不是最好的選擇?

回答

1

不要使用'end'作爲變量名稱,它是一個保留名稱,使用它可能會與您定義的任何函數或邏輯塊產生衝突。

如果你知道你的輸入將是一個字符串:從documentation for input()

str = input(prompt,'s') 
Returns the entered text as a MATLAB string, without evaluating expressions. 

至於知道文件是否存在,這東西你不得不把一些錯誤邏輯。無論是try/catch塊與load()通話或者你可以使用uigetfile()來獲取文件名。

+0

謝謝,非常完美。我會看看你提出的兩個建議,也就是文件是否存在。 –