Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

To resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016

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

    num2str(i)

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

So:

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

Products

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 ) );
    end

1 Comment

Karl on 6 May 2013

Thanks!

per isakson
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']
      end
  end

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

0 Comments

Jacob Lynch August

Contact us