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

Learn moreOpportunities for recent engineering grads.

Apply TodayTo resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016

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

*No products are associated with this question.*

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]; 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.

## 0 Comments