我需要找出Matlab hashmap/hash-tables的非零元素数量,nnz
无法使用它。例如,nnz(hhh.values)
不起作用。如何检查Matlab的hashmap中的非零元素?
keys = {'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'};
values = {327.2, 368.2, 197.6, 178.4, 100.0, 69.9}
hhh = containers.Map(keys, values)
nnz(hhh.values)
返回
未定义的函数'nnz'用于'cell'类型的输入参数。
答案 0 :(得分:2)
嗯,这有点难看,但如果你想要一些紧凑的东西,你可以nnz
使用cellfun
:
nnz(cellfun(@(x)x~=0,hhh.values))
或者您可以通过连接将标量的单元格数组转换为向量,前提是所有内容都属于同一个类,如本示例中的情况(请参阅containers.Map
中的'UniformValues'
选项):
vals = hhh.values;
nnz([vals{:}])