How to use matrix in workspace in a script

7 vues (au cours des 30 derniers jours)
John
John le 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

Réponse acceptée

Walter Roberson
Walter Roberson le 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

Plus de réponses (1)

Image Analyst
Image Analyst le 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.

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by