How to create new structure with each for loop?

I am trying to take a large dataset with mutlple fields and segment it and place it into unique structure with each for loop
if numel(start)==numel(stop)
for k=1:numel(start);
j=start(k):stop(k)+900;
field1="number"; value1=k;
field2='grill_state'; value2=grill_state(j) ;
field3='Set_Temp'; value3=SetTempF(j);
field4='TempF'; value4=Temp_F(j);
field5='AugerRPM'; value5=Auger_RPM(j);
strcat('Cook',num2str(k))=struct(field1,value1,field2,value2,field3,value3,field4,value4,field5,value5);
end
end
The goal is to take all values indexed between start and stop and place them into a structure titled Cookn for 1-n number of cooks.
so if there are 5 start points then loop should return struct cook1-cook5. Where am i going wrong?

1 Kommentar

Stephen23
Stephen23 am 10 Apr. 2022
"Where am i going wrong?"
You are trying to force numbers into variable names.
Doing so is possible, but only if you want to write slow, complex, inefficient, buggy code:
The neat, simple, and very efficient MATLAB approach is to use indexing, just as Matt J shows.

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Matt J
Matt J am 10 Apr. 2022

0 Stimmen

if numel(start)==numel(stop)
N=numel(start);
clear Cook
for k=N:-1:1
j=start(k):stop(k)+900;
Cook(k).number=k;
Cook(k).grill_state=grill_state(j) ;
Cook(k).Set_Temp=SetTempF(j);
Cook(k).TempF=Temp_F(j);
Cook(k).AugerRPM=Auger_RPM(j);
end
end

2 Kommentare

thank you, much simpler. Any reason for backwards loop?
Matt J
Matt J am 10 Apr. 2022
You're quite welcome, but please Accept-click the answer if it resolved your question.
The backward loop forces Matlab to create the Nth structure array element first. As a result, it forces the entire structure array to be pre-allocated after the first iteration of the loop.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Hilfe-Center und File Exchange

Produkte

Version

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by