Hi Everyone,
Please help me out. I am trying to get the loop to work but am getting errors: Index exceeds the number of array elements. Index must not exceed 1. The In_Use_Legend is not working...
hgdawe='OneTwoThreeFourFiveSixSevenEightNine';
bbT=[1;4;7;12;16;20;23;28;33];
ccT=[3;6;11;15;19;22;27;32;36]
LL=size(ccT,1);
for i=1:1:LL
In_Use_Legend=hgdawe(bbT:ccT);
plot(app.UIAxes2,In_Use_VertSec,In_Use_TVD,'DisplayName',In_Use_Legend);
end

 Accepted Answer

dpb
dpb on 17 Aug 2022
In
In_Use_Legend=hgdawe(bbT:ccT);
you didn't subscript your lookup array variables but refer to the arrays each in their entirety.
To make the above work would be
In_Use_Legend=hgdawe(bbT(i):ccT(i));
But, this is the wrong way to do something of the sort; as you're discovering char() arrays are arrays and need both indices and this is inconvenient at best.
Use cellstr() or the new(ish) string class here instead --
lgndName={'One','Two','Three','Four','Five','Six','Seven','Eight','Nine'}; % cellstr array
for i=1:numel(hgdawe)
plot(app.UIAxes2,In_Use_VertSec,In_Use_TVD,'DisplayName',lgndName(i));
end

3 Comments

dpb
dpb on 17 Aug 2022
ADDENDUM:
While the above isn't too bad for small problems, if you need this often or for a larger range of numbers, the FEX submission <number-to-words> is a top-drawer generic utility function.
Thanks dpb
The problem is that the code works perfectly on script but fails in the app designer
Here is the code on MATLAB script:
hgdawe='OneTwoThreeFourFiveSixSevenEightNine';
bbU=[1;4;7;12;16;20;23;28;33];
ccU=[3;6;11;15;19;22;27;32;36];
ddU=[bbU ccU];
Finals=([]);
for i=1:1:9
bbD=bbU(i);
ccD=ccU(i);
Groupings=hgdawe(bbD:ccD);
Finals=[Finals string(Groupings)];
end
Here is the same logic on MATLAB App Designer which fails
for iyy=1:1:nL
bbT=ssfT(iyy);
ccT=sscT(iyy);
In_Use_Legend=hgdawe(bbT:ccT);
Finalsz=[Finalsz string(In_Use_Legend)];
end
The error I get in the app designer is: Index exceeds the number of array elements. Index must not exceed 1.
What do I do?
dpb
dpb on 18 Aug 2022
Edited: dpb on 18 Aug 2022
Show us the whole thing and the error message in context -- in isolation we can't tell what it's complaining about -- and there are too many pieces undefined in the posted code snippet to guess.
But again, using a cellstr() insthead of char() array here is by far the better coding choice.

Sign in to comment.

More Answers (0)

Asked:

on 17 Aug 2022

Edited:

dpb
on 18 Aug 2022

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!