worldStates
是一个 Matlab MxNxL 3D 数组(张量),包含一个 MxN 二进制值网格的 L 个状态。
ps
是与不同状态相关联的概率的长度 L 列表。
该函数[worldStates, ps] = StateMerge(worldStates, ps)
应删除重复的世界状态,并将合并状态的概率与剩余的单个状态相加。重复状态是具有完全相同的二进制值配置的状态。
这是此功能的当前实现:
function [worldStates, ps] = StateMerge(worldStates, ps)
M = containers.Map;
for i = 1:length(ps)
s = worldStates(:,:,i);
s = mat2str(s);
if isKey(M, s)
M(s) = M(s) + ps(i);
else
M(s) = ps(i);
end
end
stringStates = keys(M);
n = length(stringStates);
sz = size(worldStates);
worldStates = zeros([sz(1:2), n]);
ps = zeros(1, 1, n);
for i = 1:n
worldStates(:,:,i) = eval(stringStates{i}); …
Run Code Online (Sandbox Code Playgroud)