我們已經有了一個值的數組,我們想創建另一個數組,其值不在第一個數組中。補充數組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