contour plot getting error

Hello,
I am trying to get two contour plots with my date below, and I'm getting error for the second one, I really appreciate your help to guide me,
clear all
close all
clc
[m,a]=meshgrid(0:1/11:1,0:5000:50000)
v=m.*a
[C,h]=contour(m,a,v);
set(h,'ShowText','on','TextStep',get(h,'LevelStep')*2);
colormap cool
%U=q/M^2
U=[1481.354 1232.613 1018.924 836.3533 681.2936 550.4372 440.7684 349.5441 275.1887 216.6139 170.5264]
KIAS=661*((U)*m.^2/1481).^(1/2)
figure
[A,B]=contour(m,a,KIAS);
set(B,'ShowText','on','TextStep',get(B,'LevelStep')*2);
colormap cool

2 comentarios

Walter Roberson
Walter Roberson el 3 de Sept. de 2013
What error are you getting?
Salar
Salar el 3 de Sept. de 2013
Error using contour (line 72) Z must be size 2x2 or greater.
Error in MAE325_HW2 (line 16) contour(m,a,KIAS);

Iniciar sesión para comentar.

 Respuesta aceptada

Walter Roberson
Walter Roberson el 3 de Sept. de 2013

0 votos

Your KIAS comes out as 1 x 12. When you have a vector as the third argument of contour() then the vector is treated as the list of contour levels, not as Z.
After that, the contour() error checking gets confused about what exactly is wrong: the real problem it should be diagnosing at that point is that you would have provided only two coordinate matrices (X, Y) instead of one (Z) or three (X, Y, Z).
Remember, U is a row vector, so it is 1 x something, and when you do an algebraic matrix multiplication (1 x something) x matrix, then the result is going to be 1 x some dimension, rather than a rectangle.
You might perhaps be wanting to do some repmat() somewhere along the line. And maybe a transpose or three. I can't tell.

6 comentarios

Salar
Salar el 4 de Sept. de 2013
thanks, I tired a couple of times using repmat and transpose, but I can't get this to work, can you please take a give it a try tell me what am I doing wrong? thanks!
Walter Roberson
Walter Roberson el 4 de Sept. de 2013
You need to indicate what mathematical result you want. You have currently have U*m where U is a 1 x 11 row vector and m is a 11 x 12 array. The result is going to be 1 x 12 for KIAS. But to be useful for that contour() call, you need a 11 x 12 KIAS (same size as m). You could repmat(U, 11, 1) so that U become 11 x 11 and so U*m becaome 11 x 12, but would that be what you want mathematically? The result would be the same as if you had repmat(KIAS,11,1) with your current KIAS definition -- which clearly would not give you nice contours.
This is why we need to know mathematically what you expect for each KIES entry.
Salar
Salar el 4 de Sept. de 2013
I changed my code to this : I get a graph but it doesn't look right,
clear all
close all
clc<<<<>>>>
[m,a]=meshgrid(0:1/11:1,0:5000:50000)
v=m.*a
[C,h]=contour(m,a,v);
set(h,'ShowText','on','TextStep',get(h,'LevelStep')*2);
colormap cool
%U=q/M^2
U=[1481.354 1232.613 1018.924 836.3533 681.2936 550.4372 440.7684 349.5441 275.1887 216.6139 170.5264];
%u=repmat(U,11);
KIAS=661*(U*m.^2/1481).^(1/2);
KIAS=[KIAS;KIAS;KIAS;KIAS;KIAS;KIAS;KIAS;KIAS;KIAS;KIAS;KIAS]
figure
[A,B]=contour(m,a,KIAS);
set(B,'ShowText','on','TextStep',get(B,'LevelStep')*2);
colormap cool
Salar
Salar el 4 de Sept. de 2013
Editada: Walter Roberson el 4 de Sept. de 2013
I have apicture of the ideal graph which is generated by Excel, it is attached here, I need this graph to be like this,
Salar
Salar el 4 de Sept. de 2013
Walter Roberson
Walter Roberson el 4 de Sept. de 2013
As I wrote above,
The result would be the same as if you had repmat(KIAS,11,1) with your current KIAS definition -- which clearly would not give you nice contours.
Which is also why I wrote,
This is why we need to know mathematically what you expect for each KIAS entry.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Contour Plots en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 3 de Sept. de 2013

Community Treasure Hunt

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

Start Hunting!

Translated by