2013-02-13 68 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); 

這有點像桶排序