马尔科夫 matlab 代码
时间: 2023-09-01 09:12:30 浏览: 143
以下是一个简单的马尔科夫链的Matlab代码示例:
```matlab
% 定义状态转移矩阵
transitionMatrix = [0.7 0.3; 0.4 0.6];
% 定义初始状态概率向量
initialStateProb = [1; 0];
% 定义状态标签
stateLabels = {'晴天', '雨天'};
% 定义状态序列的长度
sequenceLength = 10;
% 生成状态序列
stateSequence = zeros(sequenceLength, 1);
stateSequence(1) = discrete_rnd(initialStateProb);
for t = 2:sequenceLength
prevState = stateSequence(t-1);
stateSequence(t) = discrete_rnd(transitionMatrix(prevState, :));
end
% 打印生成的状态序列
for t = 1:sequenceLength
fprintf('第 %d 天:%s\n', t, stateLabels{stateSequence(t)});
end
% 离散随机数生成函数
function x = discrete_rnd(p)
r = rand;
cumulativeProb = cumsum(p);
x = find(r <= cumulativeProb, 1);
end
```
这段代码模拟了一个简单的天气模型,其中有两种状态:晴天和雨天。通过定义状态转移矩阵和初始状态概率向量,可以生成一个状态序列。在这个示例中,我们生成了一个长度为10的状态序列,并打印每一天的天气情况。
阅读全文