matlab 3D plot help

3 vues (au cours des 30 derniers jours)
A A
A A le 2 Déc 2013
Commenté : A A le 2 Déc 2013
Hey..I'm trying to plot the following code but i keep getting this error: (??? Error using ==> surf at 78 Z must be a matrix, not a scalar or vector.)I tried using mesh i got the same error and whe i tried using plot3 it only resulted in straight line plot and not 3D..Help !!
%%Defining givens:
f= 300e6; %%Chosen frequency
c= 3e8; %%Free space
lambda= c./f; %%Wavelenght
l_2=lambda./2;
k= (2.*pi)./l_2; %%Wave number
Io=5; % Chosen maximum value of the current
eighta=377; % Intrinsic impedance (free space)
r=l_2/(2.*pi); % Distance
h= 0:1:100; %%Variable height from the ground
L=1.25*l_2; % Dipole length
theta= 2*pi; %%Computing the requirements:
%%Electric field:
A= (k.*L.*Io.*exp(-1i.*r.*k))./(4.*pi.*r);
B= 2.*(cos(cos(theta).*k.*h));
E_F= eighta.*1i.*(A).*sin(theta).*(B);
[x,y,z]=sph2cart(h,theta-pi/2,E_F); % Converting to cartesian coordinates
% Generating 3D plot
surf(x,y,z) % Generating 3D plot
colormap(JET);
title ('Electric Field in 3D plot')
legend ('Heigth','Theta','Electric Field')
rotate3D on
axis image

Réponse acceptée

Walter Roberson
Walter Roberson le 2 Déc 2013
You are feeding the vector h, the scalar theta-pi/2, and the vector E_F into sph2cart(). The result you are going to get out for z is therefore going to be a vector, rather than a 2D matrix that surf requires.
Are you thinking that your code is providing a full regular grid of coordinates whose surface is to be represented, are are you thinking that your code is providing a set of scattered coordinates and you want a rectangular surface estimated to fit those scattered points? If you want the latter, you need to do the extrapolation using some other calls before you can surf()
  5 commentaires
Walter Roberson
Walter Roberson le 2 Déc 2013
There should be examples in the documentation. It would be easier if you looked at those and then asked more specific questions.
A A
A A le 2 Déc 2013
I added the isosurface but now i got a new error: ??? Error using ==> sph2cart.Too many output arguments.
:( :(
% if true
% code
%end
A= (k.*L.*Io.*exp(-1i.*r.*k))./(4.*pi.*r);
B= 2.*(cos(cos(theta).*k.*h));
E_F= eighta.*1i.*(A).*sin(theta).*(B);
[x,y,z,v] =sph2cart(h,theta,E_F) ;
p = patch(isosurface(x,y,z,v,-3));
isonormals(x,y,z,v,p)
%plot3(x,y,z) % Generating 3D plot
colormap(JET);
title ('Electric Field in 3D plot')
legend ('Heigth','Theta','Electric Field')
rotate3D on
axis image

Connectez-vous pour commenter.

Plus de réponses (0)

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by