How to plot elements of a structure?

1 Ansicht (letzte 30 Tage)
Alex
Alex am 13 Sep. 2018
Bearbeitet: Alex am 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 Kommentare
Bob Thompson
Bob Thompson am 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 am 14 Sep. 2018
Bearbeitet: Alex am 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)

Melden Sie sich an, um zu kommentieren.

Antworten (0)

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by