小编Emi*_*son的帖子

在 Matlab 3D 数组中查找重复的 2D 数组

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)

algorithm hash matlab dictionary

4
推荐指数
1
解决办法
70
查看次数

标签 统计

algorithm ×1

dictionary ×1

hash ×1

matlab ×1