9

我正在使用 MATLAB 处理文件中的数据。我正在编写一个程序,该程序从用户那里获取输入,然后在绘制它们的目录中找到特定文件。文件名为:

{name}U{rate}

{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说'hello','U',并且速率为50时,U将存储'helloU2' - 我怎样才能strcat正确附加{rate}?

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

非常感谢!

4

2 回答 2

8

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

一种更人性化的文件选择方式:

[fileName,filePath] = uigetfile('*', 'Select data file', '.');
if filePath==0, error('None selected!'); end
U = load( fullfile(filePath,fileName) );
于 2010-02-20T23:31:29.143 回答
3

除了像 Mikhail 建议的那样使用SPRINTF之外,您还可以通过首先使用NUM2STRINT2STR等函数将数值转换为字符串来组合字符串和数值:

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

字符串 in 的一个问题U是文件必须位于MATLAB 路径或当前目录中。否则,变量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 建议使用UIGETFILE是理想的,因为它可以帮助您确保拥有完整且正确的文件路径。

于 2010-02-21T03:03:04.217 回答