0

よろしければ、2つの質問があります。

Q1)マトリックスchoiceがあり、各人が1、2、3、4で示される4つの可能な選択肢を選択しています。3つのマトリックスA1があり、各人と各期間の収入情報が含まれていますA2A3n人とt期間があるとするA1A2、、、はn A3x tであり、choicenxtです。

ここで、別の行列を作成します。ここBで、選択行列の値に従ってB要素を選択します。つまり、の場合、。の場合、、など。Achoice(n,t)==1B(n,t) = A1(n,t)choice(n,t)==2B(n,t) = A2(n,t)

forループとifステートメントを試しましたが、実行できません。助けてください。

Q2)A収入のマトリックスがあります。A次元はn行t列です。低所得の人もいれば、高所得の人もいます。収入が1000未満の人は低く、1000を超える人は高いとしましょう。シミュレーションの最後に、一人一人が高収入か低収入かを知る必要があります。より大きなマトリックスから高収入と低収入のマトリックスを作成するにはどうすればよいですか?

4

2 に答える 2

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 の要素は、上記で定義された B i に対して 0 になります。

Q2: これは少しあいまいです。多分これはあなたが望んでいたものです:

HighIncome = A > 1000
LowIncome = A <= 1000

これでうまくいかない場合は、目的をより正確に説明してください。

[編集]: 第 2 四半期のややあいまいな説明に基づくと、次のようなことはしたくないようです。

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

高所得者の行列は低所得者の位置にゼロを持ち、その逆も同様です。これは私見ではあまり意味がありませんが、あなたの説明に最も近いものです。これでうまくいかない場合は、以下の私のコメントの指示に従って、いくつかの例を投稿してください。

于 2013-01-16T16:35:57.517 に答える
0

Q1: 3 つの単純なステートメントといくつかの論理インデックスを使用できます。

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

Q2: A と Choice を収入に基づいて 2 つの部分に分けるには、まず「低収入」の行のインデックスを見つけ、それを使用して行列から行を取得します。

lowIncomeNdx = any(A < 1000, 2);
lowIncome = A(lowIncomeNdx, :);
lowIncomeChoice = choice(lowIncomeNdx, :);
highIncome = A(~lowIncomeNdx, :);
highIncomeChoice = choice(~lowIncomeNdx, :);
于 2013-01-16T16:43:01.173 に答える