Loop for do figures with data into the structure

3 vues (au cours des 30 derniers jours)
Hernaldo Leyton
Hernaldo Leyton le 2 Juil 2017
Commenté : Walter Roberson le 3 Juil 2017
Hello
I need to please if you can help me in looping to generate several maps of several days of pressure and geopotential, whose data are inside a structure. I try to generate the code but I get the following error "Reference to non-existent field 'DIA'.
The code I have is the following:
ob=[17:27]; Corresponds to specific dates of the days
for i=1:size(ob,2);
figure(i);
pcolor(Y,X,REANALYSIS.DIA(num2str(ob(i))).PRSML); %%for example REANALYSYS.DIA17.PRSML, after REANALYSYS.DIA18.PRSML.....etc
caxis([960 1020]);
shading interp;
hold on;
[c,h]=contour(Y,X,REANALYSIS.DIA(num2str(ob(i))).ALTURA_GEOPOTENCIAL,'k'); %%for example REANALYSYS.DIA17.ALTURA_GEOPOTENCIAL, after REANALYSYS.DIA18.ALTURA_GEOPOTENCIAL........etc
hcl=clabel(c,h,'FontSize',18,'Color','k','labelspacing',2000,'Rotation',0);
for l = 1:size(hcl); textstr=get(hcl(l),'String');
textnum=str2double(textstr);
textstrnew=sprintf('%0.0f', textnum) ;
set(hcl(l),'String',textstrnew);
end
% clabel(c,h,'manual');
% clabel(c,'FontSize',20,'Color','k','Rotation',0)
% t=colorbar;
colorbar('FontSize',20);
xlabel ('Longitud','FontSize',20);
ylabel ('Latitud','FontSize',20);
axis equal;
axis tight;
hold on;
plot(A.long,A.lat);
xlim([-102.5 -42.5]);
ylim([-57.5 -7.5]);
set(gca,'FontSize',17);
end
thanks for your help
best regards

Réponses (1)

KSSV
KSSV le 3 Juil 2017
You should read about how to deal a structure. Check the following example.
% Make some structure for demo
REANALYSIS.DIA1.PRSML = 1 ;
REANALYSIS.DIA2.PRSML = 2 ;
REANALYSIS.DIA3.PRSML = 3 ;
REANALYSIS.DIA4.PRSML = 4 ;
REANALYSIS.DIA5.PRSML = 5 ;
%%This is not the way to use, it throws error
% for i = 1:5
% REANALYSIS.DIA(num2str(i)).PRSML
% end
%%use likle this
% Get the filed names and then run a loop
DIA = fieldnames(REANALYSIS) ;
for i = 1:length(DIA)
getfield(REANALYSIS,DIA{i})
end
%OR, convert structure to cell and then use
A = struct2cell(REANALYSIS) ;
for i = 1:length(A)
A{i}
end

Catégories

En savoir plus sur MATLAB Coder dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by