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

New to MATLAB?

Imported Excel strings are not functioning correctly in matlab 2012b

Asked by Michael

Michael (view profile)

on 19 Nov 2012

I have used xlsread to read in a spreadsheet containing text and numbers. I am trying to use the text to set up a structure system and noticed that the strings read from excel do not resolve the same way strings entered in matlab do. For instance, if I use

structure.('NAME1').('NAME2') = 1;

it correctly generates the structure. However, if I have

[~,names,~] = xlsread(file,sheet,corners);
structure.(names(1,1)).(names(1,2)) = 1;

I get an error saying:

Argument to dynamic structure reference must evaluate to a valid field name.

I've noticed that names(1,1) returns 'NAME1' but the string does not appear in blue in the command window the way it does if I just type 'NAME1'. What is going on here? Is it the difference between an apostrophe and a single quote?

I have similar trouble with cells imported from excel when trying to create vectors with them. Rather than just creating one vector with all the data in it it creates a cell structure with independent cells for the data. What amd I missing about the way matlab reads data from Excel?



Michael (view profile)



1 Answer

Answer by owr

owr (view profile)

on 19 Nov 2012

Just a guess, but "names" is probably a cell array, so names(1,1) and names(1,2) are 1x1 cell arrays. You need to get access to the character strings within.

Try this instead:

structure.(names{1,1}).(names{1,2}) = 1;

If this is it, spend a little time reading up on the difference of using "(...)" indexing and "{...}" indexing of cell arrays in ML.



owr (view profile)

Contact us