2010-04-09 53 views
2

需要一些MATLAB幫助!MATLAB:搜索和計數(?)

我有一組1和0,我需要找到多少個1和多少個0。

(即,x = [1 1 0 0 0 0 0 1 0 0 1 1 ....])。我正在尋找一些搜索並計入內置函數,但是我沒有成功。

回答

3

什麼內置sumlength功能,即

numOfOnes = sum(x); 
numOfZeros = length(x)-numOfOnes; 

這是假設你真的只在你的矢量0和1。如果你可以有不同的值,但是要算上0,只有1秒,你可以預處理載體和在邏輯向量計數1秒:

numOfOnes = sum(x==1); 
numOfZeros = sum(x==0); 
+0

@groovingandi:謝謝! ....這就是如果一個人經常使用編程語言(腳本編程語言)會發生什麼......一個人忘了簡單和容易的MATLAB! ... :) – Arkapravo 2010-04-09 07:32:19

3

你可以做

onesInList = sum(x == 1); 
zerosInList = sum(x == 0); 

這擴展到你在列表中的任何值(即,如果你想找到所有的七項,你可以做sevensInList = sum(x == 7);)。

+0

-1,用這些名稱的變量掩蓋內建的「ones」和「zeros」函數...選擇更好的變量名稱!這幾乎和在for循環中使用「i」一樣糟糕,然後無法使用我來表示sqrt(-1)。 – 2010-04-09 07:32:55

+0

@Daniel G:謝謝,投了票! – Arkapravo 2010-04-09 07:33:40

+0

@Michael * doh!*對不起,還沒有編程MATLAB一段時間! – 2010-04-09 07:34:28

2

一個不錯的簡單方法是使用功能NNZ

nOnes = nnz(x); 
nZeroes = nnz(~x);