Effacer les filtres
Effacer les filtres

How to plot elements of a structure?

3 vues (au cours des 30 derniers jours)
Alex
Alex le 13 Sep 2018
Modifié(e) : Alex le 14 Sep 2018
I have an array of structures that is 91x10 called B. Within each element of the array is a structure Bx, By, Bz. I want to create three pcolor plots of Bx, By and Bz. I'm not sure how to do this.
latitudes =1:1:10;
alt=1:1:91;
for j=1:length(latitudes)
for i=1:length(alt)
B_igrf(:,1) = rand(3,1)
B(i,j)=struct('Bx',B_igrf(1,1),'By',B_igrf(2,1),'Bz',B_igrf(3,1))
end
end
%map Bx
figure(2),pcolor(latitudes, alt, B.Bx)
xlabel('Time(time past.......','fontsize',24, 'fontweight','bold')
ylabel('Altitude (km)','fontsize',24, 'fontweight','bold');
xlabel(colorbar,'n_e(m^{-3})','fontsize',24, 'fontweight','bold')
set(gca,'FontSize',24)
Your help would be greatly appreciated!
  2 commentaires
Bob Thompson
Bob Thompson le 13 Sep 2018
As I understand it, when you want to work with all the elements of a field in a structure you need to concatenate them. Try:
pcolor(latitudes, alt, [B.Bx]);
No guarentees, just the first thing that came to mind.
If that doesn't work, are you getting any errors? If so, what are they?
Alex
Alex le 14 Sep 2018
Modifié(e) : Alex le 14 Sep 2018
The command you suggested gives the error "Color data input must be a matrix."
I solved the issue by using:
% magnetic field data
latitudes =1:1:10;
alt=1:1:91;
for j=1:length(latitudes)
for i=1:length(alt)
B_igrf(:,1) = rand(3,1)
Bx(i,j)= B_igrf(1,1);
By(i,j)= B_igrf(2,1);
Bz(i,j)= B_igrf(3,1);
end
end
% map Bx
figure(2),pcolor(latitudes, alt, Bx)
figure(3),pcolor(latitudes, alt, By)
figure(4),pcolor(latitudes, alt, Bz)

Connectez-vous pour commenter.

Réponses (0)

Catégories

En savoir plus sur Text Data Preparation dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by