Script not finding variable even when the variable is in my workspace
1 view (last 30 days)
Show older comments
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 Comments
Accepted Answer
Thorsten
on 8 Oct 2015
Edited: Thorsten
on 8 Oct 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 Comments
Thorsten
on 8 Oct 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
on 8 Oct 2015
Edited: Stephen23
on 8 Oct 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.
More Answers (0)
See Also
Categories
Find more on Debugging and Analysis in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!