To plot contour for an array : x,y,mass value having repeated values
8 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
I m trying to plot a contour for a array (x,y,mass2): it is huge in size . The code is :
% initialise square matrix for contour of mass
mass2=zeros(length(xyz),length(xyz));
for i=1:length(xyz)
mass2(k,k)=xyz(i);
end
m2=max((diag(mass2*1e6)));
m1=min(mean(diag(mass2*1e6)));
contourlevel = m1:((m2-m1)/3):m2; % Required contour for 10 scale to 100
contour(xyz(1,:),xyz(2,:),(log10((mass2*1e6))),contourlevel);
My code shows the following error:
Error using contour (line 55)
Vector X must be strictly increasing or strictly decreasing with no repeated values.
Error in mass_2Dplane_z (line 151)
contour(y1,z1,(log10((mass2*1e6))),contourlevel)
My proble: high time in creating the square matrix for mass, and the isue of x array no being increasing order and the repeated values
0 Commenti
Risposta accettata
Kelly Kearney
il 20 Ago 2015
Modificato: Kelly Kearney
il 20 Ago 2015
Is xyz a set of scattered 2D points and their corresponding z-data? If so, the crazy diagonal matrix you're building is not what you want. You have two choices to create your contour:
tri = delaunay(xyz(:,1), xyz(:,2));
tricontour(tri, xyz(:,1), xyz(:,2), xyz(:,3), clev);
2) Interpolate the data onto a regular grid.
xg = linspace(min(xyz(:,1)), max(xyz(:,1)), 50);
yg = linspace(min(xyz(:,2)), max(xyz(:,2)), 50);
[xg,yg] = meshgrid(xg,yg);
F = scatteredInterpolant(xyz(:,1), xyz(:,2), xyz(:,3));
zg = F(xg,yg);
contour(xg,yg,zg, clev);
I prefer the former option, usually.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Contour Plots in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!