2010-02-20 101 views
9

我正在使用MATLAB來處理來自文件的數據。我正在編寫一個程序,它接受來自用戶的輸入,然後在目錄中查找特定文件。文件被命名爲:MATLAB - 加載文件的文件名存儲在一個字符串中

{名} U {}率

{name}是代表計算機的名稱的字符串。 {rate}是一個數字。這裏是我的代碼:

%# get user to input name and rate 
NET_NAME = input('Enter the NET_NAME of the files: ', 's'); 
rate = input('Enter the rate of the files: '); 

U = strcat(NET_NAME, 'U', rate) 
load U; 

Ux = U(:,1); 
Uy = U(:,2); 

目前有兩個問題:

  1. 當我做strcat有說 '你好', 'U',和速率是50,U將存儲「helloU2 ' - 我怎樣才能讓strcat正確追加{rate}?

  2. 負載線 - 我如何取消引用U所以負載試圖加載存儲在U中的字符串?

非常感謝!

+4

1. filename = sprintf(「%s。%d」,name,rate)
2. fdata = load(filename) – Mikhail 2010-02-20 22:01:21

+0

謝謝。這就是訣竅! – Mark 2010-02-20 22:27:20

回答

8

上面的米哈伊爾的評論解決了你的直接問題。

選擇文件的更人性化的方式:

[fileName,filePath] = uigetfile('*', 'Select data file', '.'); 
if filePath==0, error('None selected!'); end 
U = load(fullfile(filePath,fileName)); 
3

除了使用SPRINTF像米哈伊爾建議,你也可以先轉換數值,使用功能,如字符串結合字符串和數值NUM2STRINT2STR

U = [NET_NAME 'U' int2str(rate)]; 
data = load(U); %# Loads a .mat file with the name in U 

之一,在U字符串的問題是,文件必須在MATLAB path或在當前嚴峻ctory。否則,變量NET_NAME必須包含這樣的完整路徑或部分:

NET_NAME = 'C:\My Documents\MATLAB\name'; %# A complete path 
NET_NAME = 'data\name'; %# data is a folder in the current directory 

使用UIGETFILE是理想的,因爲它可以幫助你,以確保您有該文件的完整和正確路徑的Amro's suggestion

相關問題