MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

# How to use matrix in workspace in a script

Asked by John on 4 Jan 2013

Hi,

I have have the function below saved in a script.

The matrix P is defined in the function.

How could I refer to a matrix P in the workspace instead? It is a 200x200 matrix so I can't type it into the function.

Thank you

```function [X] = DTMC_SimulationOne(n)
```
```%This is the vector that will hold the entire realization of the chain.
%For example, X(1) is the initial state (1 in our case), X(2) is the second
%state of the chain, etc.
X = zeros([n+1,1]);
```
```%This is the transition matrix of my imaginary chain.  Your transition
%mattrix is different.
P = [ 1/3 2/3   0;
1/4 1/2 1/4;
1     0   0];
```
```%Set the initial condition.  The first state is told to be state 1.
X(1) = 1;
```
```%The main FOR LOOP.  It runs from 1 through n, and updates the state based
%upon the previous state.
```
```for j = 1:n
```
```      %Generate a uniform random variable.
r = rand;```
```      if r < P(X(j),1)
X(j+1) = 1;
elseif r < P(X(j),1) + P(X(j),2)
X(j+1) = 2;
else
X(j+1) = 3;
end```
```end
```

## Products

No products are associated with this question.

Answer by Walter Roberson on 4 Jan 2013
```function [X] = DTMC_SimulationOne(n, P)
```
```    if nargin < 2
P = [ 1/3 2/3   0;
1/4 1/2 1/4;
1     0   0];
end```

Answer by Image Analyst on 4 Jan 2013

You need to return P in the output argument list:

```function [P X] = DTMC_SimulationOne(n)
```

if you want to refer to it in the workspace of the calling routine. Then you "refer" to is like you do any matrix:

```theValueOfAnElementOfP = P(row, column);
```

Of course P is already able to be referred to in the workspace of the function DTMC_SimulationOne. You do know that there are different workspaces, don't you? Each function has its own local workspace.