How do I fix my meshgrid?

48 visualizzazioni (ultimi 30 giorni)
Briana Pass
Briana Pass il 24 Ott 2019
Commentato: Briana Pass il 24 Ott 2019
This is the code i have inserted and im getting this. Where is the mistake in my coding and how do I fix this?
gridspacing=-8:0.5:8;
Y=-8:0:8;
Z=-8:1.5:8;
[x,Y] = meshgrid (-8:0.5:8);
Z=sqrt(exp(-x.^2-Y.^2))
surf(x,Y,Z,x.*exp(Y))
Z(R==0)=1
z = sin (R)/R
  4 Commenti
Katie
Katie il 24 Ott 2019
In your Y vector, your step size is 0 so it's an empty vector. Are you trying to pre-allocate the memory for the Y matrix that is generated by the meshgrid function? If so, you can use the following:
Y=zeros(length(gridspacing),length(gridspacing));
However, this will not change the plotted result. If you could provide some more info about what you're expecting to see, that would be great!
Briana Pass
Briana Pass il 24 Ott 2019
If you look at my above response I attached my coding instructions and a picture of how my mesh grid should look. Thank you!

Accedi per commentare.

Risposta accettata

Katie
Katie il 24 Ott 2019
Hi! Thanks for providing extra details! Below are the steps I used with explanations for each. I also labeled them in accordance with the steps in the instructions you provided.
close all; clear all; clc; %close all open figure windows, clear the variables, and clear the command window
%Step 1:
gridspacing = -8: 0.5: 8; %setup the grid spacing vector that will be used to make the meshgrid
[X Y]=meshgrid(gridspacing); %create the mesh grid
%Step 2:
R=sqrt(X.^2 + Y.^2); %Create a 2D set of values from the X and Y grids created with meshgrid
In the instructions you provided, it says that R=X^2 + Y^2. If you use this equation, you get a plot that does not match the figure you have provided. If you use the R equation in the instructions, you do get the right answers. Additionally, it says to treat X and Y like vectors. I think by this they're hinting that you should use element-wise powers (.^ rather than ^) on the matrices, not use vectors for x and y.
%Step 3:
Z=sin(R)./R; %use element-wise division to do this calculation on each grid point
Z(R==0)=1; %in any location that R is equal to 0, set Z=1
%Step 4:
figure;
mesh(x,y,Z); %surf gives you a similar plot but it's shaded in rather than a wire mesh.
The default colormap is going to be perula, while it looks like the colormap for the example figure you show is jet. You can easily change this with one line of code after you use the mesh function:
colormap('jet');
test.PNG
Hope this helps!

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by