Matlab 使用基于第三个矩阵C的条件语句从矩阵a到矩阵B的矩阵赋值

Matlab 使用基于第三个矩阵C的条件语句从矩阵a到矩阵B的矩阵赋值,matlab,matrix,Matlab,Matrix,我有两个问题,请回答: Q1)我有一个矩阵选择,每个人在其中做出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语

我有两个问题,请回答:

Q1)我有一个矩阵
选择
,每个人在其中做出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语句,但无法执行。请帮忙

问题2)我有一个收入矩阵<代码>A
是尺寸n乘以t。有些人收入低,有些人收入高。任何收入Q1的人都可以这样说:

如果只有A1 A2 A3,我不确定如何处理B中的值“4”,但这应该可以

[编辑]: 如果选项为“4”,则对于上面定义的B i,B的元素将为0

问题2: 这个有点模糊。也许这就是你想要的:

HighIncome = A > 1000
LowIncome = A <= 1000
HighIncome=A>1000
低收入=1000澳元)
A低收入=A.*(A 1000)

CHOICE\u high\u income=CHOICE.*(AQ1:您可以使用三个简单语句和一些逻辑索引

B = A1;
B(choice == 2) = A2(choice == 2);
B(choice == 3) = A3(choice == 3);
问题2:要根据收入将A和选择分为两部分,首先找到“低收入”行的索引,并使用该索引从矩阵中获取行

lowIncomeNdx = any(A < 1000, 2);
lowIncome = A(lowIncomeNdx, :);
lowIncomeChoice = choice(lowIncomeNdx, :);
highIncome = A(~lowIncomeNdx, :);
highIncomeChoice = choice(~lowIncomeNdx, :);
lowIncomeNdx=any(A<1000,2);
低收入=A(低收入指数,:);
lowIncomeChoice=选择(lowIncomeNdx,:);
高收入=A(~lowIncomeNdx,:);
高收入=选择(~lowIncomeNdx,:);

我基本上想在没有for循环的情况下完成这项工作。我用for循环完成了问题1,但需要更长的时间。但是,第2个问题我无法展示您迄今为止尝试过的内容(即,发布一些真实的代码)。非常感谢。我将在高收入和低收入两个方面进行尝试,我想从矩阵A中选择仅为高收入的人,并从选择矩阵中选择他们相应的行。选择矩阵告诉我们该人选择的是部门1、2、3还是4。这是一个n-by-t矩阵。然后我们有收入矩阵A,它也是一个n-by-t矩阵,它告诉我们每个部门的收入。现在我想要低收入人群和高收入人群的收入和选择矩阵。请您再次帮助。Thanks@user1984196什么决定一个人是否“高收入”?每个人在A中都有多个收入值,有些可能低,有些可能高。如果您编辑原始问题,将示例输入和输出矩阵包括在内,以显示您正在尝试做什么,这将非常有帮助。如果一个人的收入低于某个数字,请在收入矩阵的任何单元格中输入1000,他就是低收入。@user1984196我认为我的最新更新符合您的要求。请使用您在这些评论中输入的澄清信息编辑问题。谢谢。因此,在高收入和低收入中,我想从矩阵A中选择仅高收入的人,并从选择矩阵中选择相应的行。选择矩阵告诉我们该人是否选择部门1、2、3或4。这是一个n-x-t矩阵。然后我们有收入矩阵A,这也是一个n-x-t矩阵,告诉我们每个部门的收入。现在我想要低收入者和高收入者的收入和选择矩阵。你能再帮我一次吗。谢谢,我还是不太明白你的意思。我想请你至少给出一个矩阵A、选择矩阵以及你想要的高收入和低收入矩阵的例子。将它们设为2x3或类似的值。我不太明白你说的“选择”是什么意思,以及结果矩阵的“格式”应该是什么。
B = A1;
B(choice == 2) = A2(choice == 2);
B(choice == 3) = A3(choice == 3);
lowIncomeNdx = any(A < 1000, 2);
lowIncome = A(lowIncomeNdx, :);
lowIncomeChoice = choice(lowIncomeNdx, :);
highIncome = A(~lowIncomeNdx, :);
highIncomeChoice = choice(~lowIncomeNdx, :);