Error using contour (Z must be at least a 2x2 matrix. What changes should I make to my code to make Z a 2x2 matrix?
36 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Azeem Singh Kahlon
el 30 de En. de 2020
Editada: Cris LaPierre
el 31 de En. de 2020
alpha=linspace(1,8);
beta=linspace(0,8);
a=(1/5).*(sqrt((2.*pi.*beta)./((alpha.^2)-1)));
u= sqrt((alpha.^2)+(beta.^2));
t= sqrt(1+(beta).^2);
G=real(a.*reallog((alpha+u)./(1+t)));
[X,Y] = meshgrid(alpha,beta);
contour(X,Y,G)
The final plot of the above code should resemble something like this:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/269182/image.png)
I have double chekced, the formula is correct and the value of G at a given alpha and beta match with the experimental results. However, I face a problem with the dimensions of Z as it should be a 2x2 matrix.
Thank you in advance.
1 comentario
Cris LaPierre
el 30 de En. de 2020
Minor correction - the error message says it should be at least 2x2.
Respuesta aceptada
Cris LaPierre
el 30 de En. de 2020
Editada: Cris LaPierre
el 31 de En. de 2020
The solution is to ensure X, Y and G are all the same size. The meshgrid operation makes X and Y 100 x 100. The problem, then, is when you try to use contour, there is not a value in G for each X,Y pair.
The simplest way to do this is call the meshgrid function immediately after creating alpha and beta. That way, all the subsequent calculations are performed on the 100x100 variables, resulting in G being 100x100 as well.
alpha=linspace(1,8);
beta=linspace(0,8);
[alpha,beta] = meshgrid(alpha,beta);
a=(1/5).*(sqrt((2.*pi.*beta)./((alpha.^2)-1)));
u= sqrt((alpha.^2)+(beta.^2));
t= sqrt(1+(beta).^2);
G=real(a.*reallog((alpha+u)./(1+t)));
contour(alpha,beta,G)
Más respuestas (0)
Ver también
Categorías
Más información sobre Contour Plots en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!