2016-10-02 45 views
-1

特定列的條件子矩陣我要選擇基於原有data矩陣的某些列的條件子矩陣x7992。具體而言,原矩陣是23166乘9,遵循原始高斯碼提取基於MATLAB中

x7992 =selif(data,data[.,col_coh].==0 .and data[.,col_year].<=1992); 

我在MATLAB與

x7992 = data(data(:,col_coh)==0 & data(:,col_year)<=1992); 

col_coh,col_year是預定義的列數重寫此。但是,不是給我一個子矩陣,上面的代碼行只給了我一行(23166-by-1),這不是我想要的(而不是這個條件下的真實結果基礎)那麼如何解決它?謝謝。

---更新-----

data矩陣就像(我省略了其他列,因爲只有前3周的cols相關的選擇),第一列是個人

1 1979 0 
1 1980 0 
1 1981 1 
1 1982 0 
1 1983 1 
2 1990 0 
2 1991 0 
2 1992 0 
2 1993 1 
3 1985 0 
3 1986 0 
3 1987 0 
ID

根據條件,我想要的是從數據中的子矩陣,它排除了第二列中值> 1992的值和第三個值中值爲1的行

+0

給出的'data'矩陣和預期輸出 –

+0

嗨,@ Sardar_Usama,添加我的一些數據進一步細節的示例 – zlqs1985

回答

0

根據您給出的示例,以下將做到這一點:

data(data(:,2)<=1992 & data(:,3)~=1,:) 

這給出了這樣的輸出:

 1 1979 0 
     1 1980 0 
     1 1982 0 
     2 1990 0 
     2 1991 0 
     2 1992 0 
     3 1985 0 
     3 1986 0 
     3 1987 0 
0

你只有一列向量作爲輸出,因爲你的病情矢量返回爲一個單一的23166x1載體。

要得到你需要的colon添加爲第二個參數值的整行。 我已經分裂的例子在兩行做出更具可讀性。

condIdx = data(:,col_coh)==0 & data(:,col_year)<=1992; 
x7992 = data(condIdx, :); 

如果您想在結果矩陣中使用特定的列,只需將列號放入向量中而不是冒號操作符。

colsInResult = [1 2 3]; 
x7992 = data(condIdx, colsInResult);