2013-01-16 84 views
0

我有兩個問題,如果你能親切地迴應:矩陣分配基於第三矩陣C

Q1)我有一個矩陣choice,每個人正在4任何可能的選擇,表示爲1,2,3和4. 我有三個矩陣A1,A2,A3與每個人和每個時間段的收入信息。假設我有n個人和t個時間段,所以A1,A2,A3是n-t,並且choice是n-by-t。

現在我想要使另一矩陣B,其中B將從A根據在選擇矩陣中值爲挑元件,即,如果choice(n,t)==1,然後B(n,t) = A1(n,t)。如果choice(n,t)==2,然後B(n,t) = A2(n,t),依此類推。

我已經嘗試了for循環和if語句,我無法做到這一點。請幫忙。 Q2)我有一個收入矩陣AA是尺寸n×t。有些人收入低,有些人收入高。說收入< 1000的人低,1000以上高。在我的模擬結束時,我需要知道每個人是高收入還是低收入。我怎樣才能從更大的矩陣中創造高收入和低收入的矩陣?

+0

我基本上想不做for循環。我用for循環做了問題1,但它需要更長的時間。但是,Q2我不能這樣做 – user1984196

+1

請顯示您迄今爲止所嘗試的內容(即發佈一些真實代碼)。 –

回答

1

Q1:

C = choice %else the code gets too long 
B = A1 .* (C==1) + A2 .* (C==2) + A3 .* (C==3) 

我不知道你想怎麼處理B中的值「4」,如果你只有A1 A2 A3,但這應該工作。

[編輯]: 如果選擇是'4',那麼對於上面定義的B i,B的那個元素將是0。

Q2: 這個有點含糊。也許這是你想要的:

HighIncome = A > 1000 
LowIncome = A <= 1000 

如果這不行,請更準確地解釋你的目標。

[編輯]:基於您對Q2略少含糊的解釋 這聽起來像你wan't是這樣的:

A_high_income = A .* (A > 1000) 
A_low_income = A .* (A <= 1000) 
CHOICE_high_income = choice .* (A > 1000) 
CHOICE_high_income = choice .* (A <= 1000) 

高收入矩陣必須在低收入職位和副零反之亦然。 這不會使IMHO變得非常敏感,但它是我能得到您的描述最接近的。 如果不這樣做,請按照下面我的評論中的說明進行操作,併發布一些示例。

+0

非常感謝。讓我試試這個並回復你。 – user1984196

+0

因此,在高收入和低收入的情況下,我想從僅選擇高收入的矩陣A中挑選人,並從選擇矩陣中選擇相應的行。選擇矩陣告訴我們人們是否選擇扇區1,2,3或4.它是一個n×t矩陣。然後我們得到矩陣A的收入,這也是一個n×t矩陣,告訴我們每個部門的收入。現在我要分別爲低收入人羣和高收入人羣分配收入和選擇矩陣。你能再請幫忙嗎?謝謝 – user1984196

+0

好的,我還是不太明白你的意思。我建議你至少舉一個矩陣A,選擇矩陣和你想要的高收入和低收入矩陣的例子。讓他們2x3或類似的東西。 我不太明白你說'選擇'時的含義,以及你的結果矩陣應該是什麼'格式'。 –

0

Q1:您可以使用三個簡單的語句和一些邏輯索引。

B = A1; 
B(choice == 2) = A2(choice == 2); 
B(choice == 3) = A3(choice == 3); 

Q2:要根據收入分開的一種選擇,並分爲兩個部分,首先發現的「低收入」行的索引並用它來從矩陣得到行。

lowIncomeNdx = any(A < 1000, 2); 
lowIncome = A(lowIncomeNdx, :); 
lowIncomeChoice = choice(lowIncomeNdx, :); 
highIncome = A(~lowIncomeNdx, :); 
highIncomeChoice = choice(~lowIncomeNdx, :); 
+0

非常感謝。我會嘗試兩種方式 – user1984196

+0

因此,在高收入和低收入的情況下,我想要的是從矩陣A中選擇高收入人羣,並從選擇矩陣中選擇相應的行。選擇矩陣告訴我們人們是否選擇扇區1,2,3或4.它是一個n×t矩陣。然後我們得到矩陣A的收入,這也是一個n×t矩陣,告訴我們每個部門的收入。現在我要分別爲低收入人羣和高收入人羣分配收入和選擇矩陣。你能再請幫忙嗎?謝謝 – user1984196

+0

@ user1984196什麼決定一個人是否「高收入」?每個人在A有多個收入值,有些可能很低,有些可能很高。如果您編輯原始問題以包含示例輸入和輸出矩陣以顯示您正在嘗試執行的操作,那將非常有幫助。 – shoelzer