2010-02-20 96 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

相关问题