【问题标题】:Complementary array Matlab互补数组 Matlab
【发布时间】:2013-02-13 10:59:00
【问题描述】:

我们有一个值数组,我们想创建另一个数组,其值不在第一个数组中。

例子:

load('internet.mat') 

第一列包含以 MB 为单位的值,我们认为是这样的:

MB_no = setdiff(v, internet(:,1))

其中 v 是一个 0 向量,其长度等于 internet.mat 中的行数。但它只是不起作用。

那么,我们该怎么做呢?

【问题讨论】:

  • v 中有什么?你是怎么产生v的?还有为什么 v 应该有与 internet(:,1) 相同数量的元素?请给出 internet(:,1) 和 v 的小示例数据集
  • 我认为上面的人误解了setdiff的用法。如果将一个零向量和(比如说)第一个向量放入setdiff,那么第一个向量将不会从原始数据中删除。你应该阅读函数帮助here
  • 您描述了新数组中不应该出现的内容,请同时描述新数组中应该出现的内容。

标签: matlab


【解决方案1】:

您需要指定可能值的范围以定义哪些值不在 internet 中。假设范围是v = 1:10,那么setdiff(v,internet(:,1)) 将为您提供1:10 中不在internet 第一列中的值。

【讨论】:

    【解决方案2】:

    似乎您不想要第一列。 你可以这样做:

    MB_no=internet(:,2:end);
    

    【讨论】:

      【解决方案3】:

      假设internet(:,1) 仅有正整数,并且您希望找出[1,...,max( internet(:,1) )] 中哪些整数出现在您可以简单地做到的范围内

      app = [];
      app( internet(:,1) ) = 1;
      MB_no = find( app == 0 );
      

      这有点像桶排序

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-05-17
        • 2015-02-23
        • 2013-09-17
        • 2013-01-16
        • 1970-01-01
        • 2015-05-10
        • 2012-02-01
        • 1970-01-01
        相关资源
        最近更新 更多