是否有内置的方法来对任意单元数组条目进行散列,摘要或字符串序列化?

时间:2014-04-12 21:36:19

标签: matlab

简短版本:

我正在寻找内置哈希函数u,以便表达式isequal(u(A), u(B))isequal(A, B)始终产生相同的结果,任何值AB

(或者,不太正式:两个值AB应该相等当且仅当他们的u - 变换相等时。)


长版:

我的一些代码将unique(..., 'stable')应用于输入table X,如下所示:

[~, IX, IZ] = unique(X, 'stable');

不幸的是,如果X.(j)的任何列X违反约束,则此代码会失败

~iscell(X.(j)) || iscellstr(X.(j))

当然,这是行为,如unique的文档中所述,但它不必要地缩小了我的代码范围。毕竟,我需要的只是索引向量IXIZ

我希望通过预处理X来解决此限制,以生成一个中间表Y,其中违反X.(j)的{​​{1}}列X上述约束被替换为其中每个条目已被替换为与unique限制兼容的合适值的约束。更具体地说,我正在寻找一些变换u,以便X.(j)的任何列X

    对于任何一对行索引isequal(u(X(i1, j)), u(X(i2, j)))isequal(X(i1, j), X(i2, j))
  1. i1相当于i2;和
  2. u(X.(j))unique的合适参数。
  3. (上面的第一个条件可以表示为:当且仅当他们的u - 变换相等时,两个列条目相等

    (FWIW,就我的申请而言,可以安全地假设X的列不包含NaN<undefined>值。)

    有很多可能的方法可以设想实现这样的转换u,但我不确定在MATLAB中如何最好地实现它。

    通过谷歌,我发现了一些可能适合该法案的第三方功能,但如果有任何内置替代方案,我更愿意接受。< / p>

1 个答案:

答案 0 :(得分:1)

如此blog post中所述,您可以使用未记录的内置{}

getByteStreamFromArray