非零元素在Matlab中使用哈希表命名哈希映射?

时间:2014-01-05 21:04:18

标签: matlab hash hashmap

我需要找出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'类型的输入参数。

1 个答案:

答案 0 :(得分:2)

嗯,这有点难看,但如果你想要一些紧凑的东西,你可以nnz使用cellfun

nnz(cellfun(@(x)x~=0,hhh.values))

或者您可以通过连接将标量的单元格数组转换为向量,前提是所有内容都属于同一个类,如本示例中的情况(请参阅containers.Map中的'UniformValues'选项):

vals = hhh.values;
nnz([vals{:}])