Reputation: 7576
I am using MATLAB to process data from files. I am writing a program that takes input from the user and then locates the particular files in the directory graphing them. Files are named:
{name}U{rate}
{name} is a string representing the name of the computer. {rate} is a number. Here is my code:
%# 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);
There are currently two problems:
When I do the strcat
with say 'hello', 'U', and rate is 50, U will store 'helloU2' - how can I get strcat
to append {rate} properly?
The load line - how do I dereference U so load tries to load the string stored in U?
Many thanks!
Upvotes: 9
Views: 22974
Reputation: 124563
Mikhail's comment above solves your immediate problem.
A more user-friendly way of selecting a file:
[fileName,filePath] = uigetfile('*', 'Select data file', '.');
if filePath==0, error('None selected!'); end
U = load( fullfile(filePath,fileName) );
Upvotes: 8
Reputation: 125864
In addition to using SPRINTF like Mikhail suggested, you can also combine strings and numeric values by first converting the numeric values to strings using functions like NUM2STR and INT2STR:
U = [NET_NAME 'U' int2str(rate)];
data = load(U); %# Loads a .mat file with the name in U
One issue with the string in U
is that the file has to be on the MATLAB path or in the current directory. Otherwise, the variable NET_NAME
has to contain a full or partial path like this:
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 of using UIGETFILE is ideal because it helps you to ensure you have a complete and correct path to the file.
Upvotes: 3