Я использую MATLAB для обработки данных из файлов. Я пишу программу, которая берет вход от пользователя и затем определяет местоположение конкретных файлов в каталоге, изображающем их в виде графика. Файлы называют:
{имя} U {уровень}
{имя} является строкой, представляющей название компьютера. {Уровень} является числом. Вот мой код:
%# 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);
В настоящее время существует две проблемы:
Когда я делаю strcat
с говорят 'привет', 'U', и уровень равняется 50, Вы сохраните 'helloU2' - как я могу добраться strcat
добавлять {уровень} правильно?
Линия нагрузки - как я разыменовываю U так загрузка, пытается загрузить строку, сохраненную в U?
Большое спасибо!
Комментарий Михаила выше решает вашу непосредственную проблему.
Более удобный способ выбора файла:
[fileName,filePath] = uigetfile('*', 'Select data file', '.');
if filePath==0, error('None selected!'); end
U = load( fullfile(filePath,fileName) );
В дополнение к использованию SPRINTF , как предложил Михаил, вы также можете комбинировать строки и числовые значения, сначала преобразовав числовые значения в строки, используя такие функции, как NUM2STR и INT2STR :
U = [NET_NAME 'U' int2str(rate)];
data = load(U); %# Loads a .mat file with the name in U
Одна проблема со строкой в 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
Предложение Амро об использовании UIGETFILE идеально, поскольку помогает вам убедиться, что у вас есть полный и правильный путь к файлу.