Surf Plot using loops- Z must be a matrix, not a scalar or vector.
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Fabricio Pena
el 20 de Jun. de 2017
Respondida: Mechrod
el 29 de Jun. de 2017
Hello everyone,
I'm trying to plot a surface with the following code, but I keep getting this error. I don't know how to solve this, could someone help me?
Thanks in advance.
clear all;
% Welding parameters
%----------------------------
U = 28; %Voltage (V)
I = 260; %Current (A)
n = 0.9; %Efficiency
Q = U*I*n;
% Goldak Double-ellipsoid
%------------------------
a = 5;
b = 6;
C1 = 5;
C2 = 20;
FF = 0.6;
FR = 1.4;
x = [-10:.2:10];
y= 0;
for z = -15:.05:15
if z < 0
C = C1;
F = FF;
else
C = C2;
F = FR;
end
end
[xx,zz] = meshgrid(x,z);
A = ((6*sqrt(3)*F*Q)/(a*b*C*pi*sqrt(pi)));
B = exp(-3*(xx.^2/a.^2)).*exp(-3*(zz.^2/C.^2));
q = A*B;
surf (xx,zz,q)
Error using surf (line 57)
Z must be a matrix, not a scalar or vector.
Error in Goldak2 (line 34)
surf (xx,zz,q)
1 comentario
KSSV
el 20 de Jun. de 2017
In your code z is a scalar, to use surf after meshgrid z should be matrix and a vector respectively.
Respuesta aceptada
David Goodmanson
el 20 de Jun. de 2017
Editada: David Goodmanson
el 20 de Jun. de 2017
Hi Fabricio, the z vector does not survive (except for its last value) after the for loop. z is a scalar at that point. So you need to do something like
z = -15:.05:15;
for z1 = z
if z1 < 0
C = C1;
F = FF;
else
C = C2;
F = FR;
end
end
[xx,zz] = meshgrid(x,z);
If you change the z spacing to something like .2 instead of .05, the plot is easier to see.
0 comentarios
Más respuestas (1)
Mechrod
el 29 de Jun. de 2017
Do you have a picture of what you are trying plot? So we now what are the dimensions a, b, c1, c2 and etc.
0 comentarios
Ver también
Categorías
Más información sobre Surface and Mesh 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!