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 MakerZone

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

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!