【问题标题】:ismember for NaN and values not working with different sized array matlab用于 NaN 和值的 ismember 不适用于不同大小的数组 matlab
【发布时间】:2018-11-22 22:14:47
【问题描述】:

我正在尝试比较 2 个不同大小的数组并获取匹配对的列。

如果我这样做:

ismembernan = @(a,b) ismember(a,b) | (isnan(a) & any(isnan(b)));
a = [NaN 11 12 13 14 15; NaN 0 1 2 3 4; NaN 5 6 7 8 9];
b = [NaN 0 1 2 3 4; NaN 5 6 7 8 9]];
k = ismembernan(a,b);
col = all(k,2);
column = find(col)

在 MATLAB 2016b 中,我得到了预期的答案

列= 2 3

但在 MATLAB 2014a 中(我必须使用此版本)我收到以下错误:

使用 & 时出错

输入必须具有相同的大小。

@(a,b)ismember(a,b)|(isnan(a)&any(isnan(b))) 中的错误

也许解决方案是带有 if 语句的嵌套 for 循环,但我正在寻找更好的解决方案。

如何让 ismember 在 R2014a 中使用 nan 值?

【问题讨论】:

    标签: matlab nan


    【解决方案1】:

    R2016b 中引入了隐式扩展。在旧版本中,使用 bsxfun

    ismembernan = @(a,b) ismember(a,b) | bsxfun(@and,isnan(a), any(isnan(b)));
    

    【讨论】:

    猜你喜欢
    • 2013-09-08
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    • 2021-03-22
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    相关资源
    最近更新 更多