我们已经有了一个值的数组,我们想创建另一个数组,其值不在第一个数组中。补充数组Matlab
实施例:
load('internet.mat')
第一列包含以MB的值,我们已经在像想:
MB_no = setdiff(v, internet(:,1))
,其中v为0矢量,其长度等于行数在internet.mat。但它不起作用。
那么,我们该怎么做呢?
我们已经有了一个值的数组,我们想创建另一个数组,其值不在第一个数组中。补充数组Matlab
实施例:
load('internet.mat')
第一列包含以MB的值,我们已经在像想:
MB_no = setdiff(v, internet(:,1))
,其中v为0矢量,其长度等于行数在internet.mat。但它不起作用。
那么,我们该怎么做呢?
看起来好像你不想要第一列。 你可以简单地做:
MB_no=internet(:,2:end);
你需要指定的可能值的范围来定义什么样的价值观是不是在internet
。假设范围是v = 1:10
,那么setdiff(v,internet(:,1))
会给出1:10
中不在internet
的第一列中的值。
假设internet(:,1)
只有正整数,你想找到这在[1,...,max(internet(:,1))]
那些不出现在该范围内的整数,你可以简单地做
app = [];
app(internet(:,1)) = 1;
MB_no = find(app == 0);
这有点像桶排序。
v中有什么?你是如何产生v的?另外为什么要v具有与因特网相同数量的元素(:,1)?请给出一个互联网小例子数据集(:,1)和v – Dan 2013-02-13 11:17:32
我想上面的人误解了'setdiff'的用法。如果在'setdiff'中放入一个零矢量(也就是说)第一个矢量,那么第一个矢量不会从原始数据中移除。你应该阅读函数帮助[here](http://www.mathworks.com/help/matlab/ref/setdiff.html) – 2013-02-13 11:29:04
你描述了什么不应该在新的数组中,请描述什么应该在新阵列。 – 2013-02-13 12:25:26