2013-02-13 72 views
0

我们已经有了一个值的数组,我们想创建另一个数组,其值不在第一个数组中。补充数组Matlab

实施例:

load('internet.mat') 

第一列包含以MB的值,我们已经在像想:

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

,其中v为0矢量,其长度等于行数在internet.mat。但它不起作用。

那么,我们该怎么做呢?

+0

v中有什么?你是如何产生v的?另外为什么要v具有与因特网相同数量的元素(:,1)?请给出一个互联网小例子数据集(:,1)和v – Dan 2013-02-13 11:17:32

+0

我想上面的人误解了'setdiff'的用法。如果在'setdiff'中放入一个零矢量(也就是说)第一个矢量,那么第一个矢量不会从原始数据中移除。你应该阅读函数帮助[here](http://www.mathworks.com/help/matlab/ref/setdiff.html) – 2013-02-13 11:29:04

+0

你描述了什么不应该在新的数组中,请描述什么应该在新阵列。 – 2013-02-13 12:25:26

回答

0

看起来好像你不想要第一列。 你可以简单地做:

MB_no=internet(:,2:end); 
1

你需要指定的可能值的范围来定义什么样的价值观是不是在internet。假设范围是v = 1:10,那么setdiff(v,internet(:,1))会给出1:10中不在internet的第一列中的值。

0

假设internet(:,1)只有正整数,你想找到这在[1,...,max(internet(:,1))]那些出现在该范围内的整数,你可以简单地做

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

这有点像桶排序