2013-01-16 83 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