【问题标题】:How to fill differences between two vectors with NaN to make equal lengths?如何用 NaN 填充两个向量之间的差异以使长度相等?
【发布时间】:2021-01-05 02:12:59
【问题描述】:

我正在寻找一种快速方法来比较两个不同长度的向量,并用 NaN 值填充较短数组的缺失位置。

例子:

a = [2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2102 2103 2104 2105 2106 2108 2109 2110 2111]

b = [2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2106]

我想比较 ba 并且在任何有差异的地方,我都需要一个 NaN 值,以便最终它们具有相同的长度:

c = [NaN 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 NaN  NaN NaN NaN 2106 NaN NaN NaN NaN]

我想我可以使用setdiff 找出ab 之间的区别: [s,idx] = setdiff(a,b)

但我不知道将 NaN 值插入b 的最佳方法是什么,因为如果这样做,例如b(idx(1)) == NaN 然后我在第一个元素中覆盖 b 中的内容。 有人可以指点我正确的方向吗?

【问题讨论】:

    标签: matlab compare nan missing-data set-difference


    【解决方案1】:

    我的假设是,ba 的子集。如果b中存在a中不存在的元素,请提供逻辑,如何处理这种情况。

    MATLAB 的 ismember 函数是您的朋友(使用 Octave 5.2.0 和 MATLAB Online 测试):

    close all;
    close all;
    clc;
    
    a = [2090, 2091, 2092, 2093, 2094, ...
         2095, 2096, 2097, 2098, 2099, ...
         2100, 2102, 2103, 2104, 2105, ...
         2106, 2108, 2109, 2110, 2111]
    
    b = [2091, 2092, 2093, 2094, 2095, ...
         2096, 2097, 2098, 2099, 2100, ...
         2106]
    
    % Get indices, where to find values from b in a     
    idx = ismember(a, b)
    
    % Create nan vector with the size of a
    c = nan(size(a));
    
    % Get correct values from the found indices
    c(idx) = a(idx)
    

    输出:

    a =
       2090   2091   2092   2093   2094   2095   2096   2097   2098   2099   2100   2102   2103   2104   2105   2106   2108   2109   2110   2111
    
    b =
       2091   2092   2093   2094   2095   2096   2097   2098   2099   2100   2106
    
    c =
        NaN   2091   2092   2093   2094   2095   2096   2097   2098   2099   2100    NaN    NaN    NaN    NaN   2106    NaN    NaN    NaN    NaN
    

    【讨论】:

    • 你也可以把它当成单行机试试:a(~ismember(a,b)) = NaN
    猜你喜欢
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    • 2015-10-12
    • 1970-01-01
    相关资源
    最近更新 更多