简短版本:
我正在寻找内置哈希函数u
,以便表达式isequal(u(A), u(B))
和isequal(A, B)
始终产生相同的结果,任何值A
和B
。
(或者,不太正式:两个值A
和B
应该相等当且仅当他们的u
- 变换相等时。)
长版:
我的一些代码将unique(..., 'stable')
应用于输入table X
,如下所示:
[~, IX, IZ] = unique(X, 'stable');
不幸的是,如果X.(j)
的任何列X
违反约束,则此代码会失败
~iscell(X.(j)) || iscellstr(X.(j))
当然,这是行为,如unique
的文档中所述,但它不必要地缩小了我的代码范围。毕竟,我需要的只是索引向量IX
和IZ
。
我希望通过预处理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))
,i1
相当于i2
;和u(X.(j))
是unique
的合适参数。(上面的第一个条件可以表示为:当且仅当他们的u
- 变换相等时,两个列条目相等。
(FWIW,就我的申请而言,可以安全地假设X
的列不包含NaN
或<undefined>
值。)
有很多可能的方法可以设想实现这样的转换u
,但我不确定在MATLAB
中如何最好地实现它。
通过谷歌,我发现了一些可能适合该法案的第三方功能,但如果有任何内置替代方案,我更愿意接受。< / p>