如果你能回复,我有两个问题:
Q1)我有一个矩阵choice
,其中每个人正在做出4个可能的选择,表示为1,2,3和4。
我有三个矩阵A1
,A2
,A3
,其中包含每个人和每个时间段的收入信息。假设我有n个人和t个时间段,因此A1
,A2
,A3
是n-by-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)我有一个收入矩阵A
。 A
是维度n-by-t。有些人收入低,有些人收入高。假设任何收入<1000的人都很低,1000以上的人都很高。在我的模拟结束时,我需要知道每个人是高收入还是低收入。如何从更大的矩阵中获得高收入和低收入矩阵?
答案 0 :(得分:1)
Q1:
C = choice %else the code gets too long
B = A1 .* (C==1) + A2 .* (C==2) + A3 .* (C==3)
如果您只有A1 A2 A3,我不知道您想如何处理B中的值'4',但这应该有效。
[编辑]: 如果选择为'4',则对于上面定义的B i,B的元素将为0。
Q2: 这个有点模糊。也许这就是你想要的:
HighIncome = A > 1000
LowIncome = A <= 1000
如果不这样做,请更准确地解释您的目标。
[编辑]: 基于你对Q2的略微模糊的解释,听起来你不喜欢这样:
A_high_income = A .* (A > 1000)
A_low_income = A .* (A <= 1000)
CHOICE_high_income = choice .* (A > 1000)
CHOICE_high_income = choice .* (A <= 1000)
高收入矩阵在低收入位置有零,反之亦然。 这对恕我直言并没有太大的意义,但它是我能得到的最接近你的描述。 如果不这样做,请按照我在下面的评论中的说明进行操作并发布一些示例。
答案 1 :(得分:0)
Q1:你可以使用三个简单的语句和一些逻辑索引。
B = A1;
B(choice == 2) = A2(choice == 2);
B(choice == 3) = A3(choice == 3);
Q2:要根据收入将A和选项分成两部分,首先要找到“低收入”行的索引,并使用它来从矩阵中获取行。
lowIncomeNdx = any(A < 1000, 2);
lowIncome = A(lowIncomeNdx, :);
lowIncomeChoice = choice(lowIncomeNdx, :);
highIncome = A(~lowIncomeNdx, :);
highIncomeChoice = choice(~lowIncomeNdx, :);