Issues with looping in structure: variable in the name
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
I am loading one Excel spreadsheet with 11 tabs. The 11 tabs are named fl1, fl2,... fl11.
The spreadsheet is currently loaded into a structure named flight_data. I don't like the way it is organized, so I want to create a 11 new structures: somename1, somename2,....somename11.
I think the code will show how I'm trying to structure my data. The goal is to have 11 strutures that look like this:
%my loop that doesn't work
for i = 1:11
fpro(i).loc7.x = flight_data.fpro{i}(:,1)
end
%my structure setup
fpro(i).name = 'Flight Profile {i}';
fpro(i).loc7.x = flight_data.fl{i}(:,1)
fpro(i).loc9.x = flight_data.fl{i}(:,4)
fpro(i).loc10.x = flight_data.fl{i}(:,7)
fpro(i).loc7.y = flight_data.fl{i}(:,2)
fpro(i).loc9.y = flight_data.fl{i}(:,5)
fpro(i).loc10.y = flight_data.fl{i}(:,8)
fpro(i).loc7.z = flight_data.fl{i}(:,3)
fpro(i).loc9.z = flight_data.fl{i}(:,6)
fpro(i).loc10.z = flight_data.fl{i}(:,9)
2 comentarios
Stephen23
el 22 de Ag. de 2024
Editada: Stephen23
el 22 de Ag. de 2024
"...I want to create a 11 new structures: somename1, somename2,....somename11."
Best avoided:
Rather than inefficiently forcing pseudo-indices into variable names just use actual indices into e.g. a structure array. Real indexing will be simpler and much more efficient thatn what you are attempting. Your approach will make working with your data more complex and inefficient.
Respuesta aceptada
Voss
el 22 de Ag. de 2024
I guess this is something like your flight_data variable:
flight_data = struct('fl',{permute(num2cell(rand(10,9,11),[1 2]),[3 1 2])})
flight_data.fl
I think you're going for this:
clear('fpro')
for i = 1:numel(flight_data.fl)
fpro(i).name = sprintf('Flight Profile %d',i);
fpro(i).loc7.x = flight_data.fl{i}(:,1);
fpro(i).loc9.x = flight_data.fl{i}(:,4);
fpro(i).loc10.x = flight_data.fl{i}(:,7);
fpro(i).loc7.y = flight_data.fl{i}(:,2);
fpro(i).loc9.y = flight_data.fl{i}(:,5);
fpro(i).loc10.y = flight_data.fl{i}(:,8);
fpro(i).loc7.z = flight_data.fl{i}(:,3);
fpro(i).loc9.z = flight_data.fl{i}(:,6);
fpro(i).loc10.z = flight_data.fl{i}(:,9);
end
Check some of the results:
fpro
fpro(1)
fpro(2)
2 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Simscape Electrical en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!