String in a Loop

4 views (last 30 days)
DARLINGTON ETAJE
DARLINGTON ETAJE on 17 Aug 2022
Edited: dpb on 18 Aug 2022
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
DARLINGTON ETAJE
DARLINGTON ETAJE on 18 Aug 2022
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)

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!