MATLAB Answers


Using loop in strings for import

Asked by Karl
on 30 Apr 2013
Latest activity Answered by Jacob Lynch August on 24 Mar 2014

I have excelfiles with names "2011", "2012", "2013" that i want to read from Matlab. I want to use a for loop reading these excelfiles, since tha names are so alike.

This did not work

for i = 2011:1:2013; xlsread('adress\(i).xlsx');

It does not seem like Matlab interprest the "i" in the string at a number, but onlye as an "i". Anybody know how to solve this?

  1 Comment

Alessandro Renna on 6 May 2013

You can also use


to convert the numerical variable i in a string variable and then concatenate it to the string '.xlsx'


    for i=2011:1:2013
        file{i}=xlsread([num2str(i) '.xlsx']);


No products are associated with this question.

2 Answers

Answer by per isakson
on 30 Apr 2013
Edited by per isakson
on 30 Apr 2013
 Accepted answer

The number, e.g. 2012, must be converted to a string. Note the double back-slash, "\\"

    for ii = 2011:1:2013
        [ num, txt ] = xlsread( sprintf( 'adress\\%i.xlsx', ii ) );

  1 Comment

on 6 May 2013


Answer by Jacob Lynch August on 24 Mar 2014

I have a similar problem. I have data taken from multiple machines with variable conditions, and a consistent heirarchy. E.g.

  • Machine = MAA, MAB, MAC, ..., MBH
  • Condition = 100, 200, 300, ..., 800
  • Part = Gold, Platinum, Silver

File = X:\Folder\Machine\Condition_Part\dat.csv

I want to treat text as I would a numerical list in a for loop. Obviously ['MAA' 'MAB' ... 'MBH'] would just concatenate the strings into one, which is not useful. I tried variations of the following and a few functions like strcat to name the file to no avail.

for machine = {'MAA' 'MAB' 'MAC' ... 'MBH'}
  for condition = {'100' '200' '300' ... '800'}
      for part = {'Gold' 'Platinum' 'Silver'}
          CSV = ['X:\Folder\' machine '\' condition '_' part '\dat.csv']

What's the best way to generally go about this without elseif or cases?


Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply today