MATLAB Answers


How to use matrix in workspace in a script

Asked by John
on 4 Jan 2013


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;
          X(j+1) = 3;




No products are associated with this question.

2 Answers

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


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.


Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply today