Script not finding variable even when the variable is in my workspace

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

 채택된 답변

Thorsten
Thorsten 2015년 10월 8일
편집: Thorsten 2015년 10월 8일
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

aaron Harvey
aaron Harvey 2015년 10월 8일
편집: aaron Harvey 2015년 10월 8일
Awesome thank-you! I guess its bad practice since the script will only work if you know what's inside it, but for the way im using it I don't mind. I'm trying to find an extra-lazy way to make almost 100 contour plots, all with the same X&Y.
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
Stephen23 2015년 10월 8일
편집: Stephen23 2015년 10월 8일
@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.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Scope Variables and Generate Names에 대해 자세히 알아보기

질문:

2015년 10월 8일

편집:

2015년 10월 8일

Community Treasure Hunt

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

Start Hunting!

Translated by