Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MATLAB - load file whose filename is stored in a string

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:

  1. 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?

  2. The load line - how do I dereference U so load tries to load the string stored in U?

Many thanks!

like image 608
Mark Avatar asked Feb 20 '10 21:02

Mark


People also ask

What is Fullfile in MATLAB?

fullfile returns a character vector containing the full path to the file. On Windows® platforms, the file separator character is a backslash ( \ ).


2 Answers

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) );
like image 151
Amro Avatar answered Sep 30 '22 22:09

Amro


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.

like image 35
gnovice Avatar answered Oct 03 '22 22:10

gnovice