Using the global operator

I have a function below.
As you can see if t==1 I create a vector kk. However, I can not use this kk in the 'else' statement unless I use 'global kk''. Is that correct?
function [ll mm]= ssample(e2,t)
global kk
if t==1
kk=zeros(T,1);
for s=1:T
kk(s) =...;
end
else
for s=t:T
ll =kk(s) ;
end
end
mm=kk;
end

5 Comments

I edited your code to fix the indenting and make it readable.
Am I using correctly the global operator?
We have no reason to expect that t will be 1 before it is anything else.
The correct way to use the global operator is mostly to not use it.
I suspect you should be using
persistent kk
if isempty(kk)
... initialize kk here ...
end
I edit my question. t is defined and it starts from t=1. Should I use global?
We would need the calling code to be sure that t starts at 1.
Better to avoid the matter, such as the way Matt suggests.

Sign in to comment.

 Accepted Answer

No, you should not use global. Your code should look like this:
function [ll, mm, kk]= ssample(e2,t,kk)
...
end

More Answers (0)

Categories

Find more on Programming in Help Center and File Exchange

Asked:

on 9 May 2019

Commented:

on 9 May 2019

Community Treasure Hunt

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

Start Hunting!