MATLAB - 加载文件,其文件名存储在字符串中

时间:2010-02-20 21:53:08

标签: string matlab-load

我正在使用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说“你好”,“你好”,费率为50时,你会存储'helloU2' - 我怎样才能strcat追加{rate}好吗?

  2. 加载线 - 如何取消引用U,以便加载尝试加载存储在U中的字符串?

  3. 非常感谢!

2 个答案:

答案 0 :(得分:8)

米哈伊尔上面的评论解决了你眼前的问题。

选择文件的用户友好方式:

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

答案 1 :(得分:3)

除了使用像Mikhail建议的SPRINTF之外,您还可以使用NUM2STRINT2STR等函数将数值转换为字符串,从而组合字符串和数值:

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

U中字符串的一个问题是该文件必须位于MATLAB path或当前目录中。否则,变量NET_NAME必须包含完整或部分路径,如下所示:

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

Amro's suggestion使用UIGETFILE是理想的,因为它可以帮助您确保拥有完整且正确的文件路径。