Script not finding variable even when the variable is in my workspace
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
aaron Harvey
el 8 de Oct. de 2015
So I have a bunch of variables from a data file in my workspace and I'm making a script to plot a contour plot quickly and it works fine.
function contf(A,B,C)
a=min(A):(max(A)-min(A))/200:max(A);
b=min(B):(max(B)-min(B))/200:max(B);
[Aq,Bq]=meshgrid(a,b);
C=griddata(A,B,C,Aq,Bq);
contourf(Aq,Bq,C)
set(gca,'YDir','reverse');
set(gca,'xaxislocation','top');
end
However A and B are always X and Y, variables that are in my respectively in my workspace. When i try this shorter function its not working?
function qcontf(C)
A=X
B=Y
a=min(A):(max(A)-min(A))/200:max(A);
b=min(B):(max(B)-min(B))/200:max(B);
[Aq,Bq]=meshgrid(a,b);
C=griddata(A,B,C,Aq,Bq);
contourf(Aq,Bq,C)
set(gca,'YDir','reverse');
set(gca,'xaxislocation','top');
end
I just get
Undefined function or variable 'X'.
Error in qcontf (line 2) A=X
0 comentarios
Respuesta aceptada
Thorsten
el 8 de Oct. de 2015
Editada: Thorsten
el 8 de Oct. de 2015
The variables X and Y in your workspace are not known inside the function. You can use the following, but it's not considered good practice:
function qcontf(C)
global X
global Y
A=X
B=Y
3 comentarios
Thorsten
el 8 de Oct. de 2015
But why don't you use the first version of your function with 3 arguments A, B, C and call it using
qcontf(X,Y,C)
Stephen23
el 8 de Oct. de 2015
Editada: Stephen23
el 8 de Oct. de 2015
@aaron Harvey: don't learn the bad practice of using globals when you can simply pass the values as arguments. Using globals is considered a bad practice in most programming languages, and passing arguments is what MATLAB recommends:
" Best Practice: Passing Arguments"
"The most secure way to extend the scope of a function variable is to use function input and output arguments, which allow you to pass values of variables."
Compare to this list:
and thousands of questions on this forum resulting from the decision to use globals.
Más respuestas (0)
Ver también
Categorías
Más información sobre Debugging and Analysis 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!