MATLAB: Problem with sum in function

sum function

Hello every one!
I am new with matlab and i have a problem with very simple program with matlab 2019a
Code 1:
clear all;
z=so;
function [s] = so
A=[1 5 3 4 2 10 21 65];
s = sum(A);
s = s+1;
end
The answer is z=112, it's correct
Code 2:
clear all;
A=[1 5 3 4 2 10 21 65];
z=so;
function [s] = so
s = sum(A);
s = s+1;
end
I get this error
So as far as i understand, "Sum" can not read the variable out of the function "so".
DId i do somethings wrong or my computer have issues?
It's just a little test, but i need to get work with "sum" in a function so I can write a bigger program.

Best Answer

That is correct. Functions operate in their own workspaces.
Variables from outside the function generally only enter a function's workspace when passed as input arguments to the function.
Variables from inside the function generally only leave the function's workspace to enter a different workspace when returned from the function as an output argument.
Functions generally can't access variables outside their own workspace.
[Those rules aren't technically complete, but when you're starting out they're a good mental model to use as a starting point for your MATLAB knowledge.]
In your first example you created the variable A inside so's workspace so the so function has access to the A variable. Since you didn't return A from so, A is not added to the workspace from which so was called when the so function returns.
In your second example you created A outside so's workspace and didn't pass it in as an input, so the so function doesn't have access to the A variable.