2011-02-09 19 views
0

以下のようなユーザ入力データを仮定します。私は自分の行列をコストと定義します。作成された行列は、3行3列の行列です。だから、行列は次のように形成しなければならない:Matlabの行列へのアクセス

cost = [c11 c12 c13    

     c21 c22 c23 

     c31 c32 c33] 

私は、行の設定表示したいので、私はこのようにそれを実行します。

c1 = cost(1,:); % it will become c1 = c11 c12 c13 

c2 = cost(2,:); % it will become c2 = c21 c22 c23 

c3 = cost(3,:); % it will become c3 = c31 c32 c33 

その後、私は行列に値を求めています。私はこれを好きです。

c11 = cost(1,1); 

c12 = cost(1,2); 

c13 = cost(1,3); 

c21 = cost(2,1); 

c22 = cost(2,2); 

c23 = cost(2,3); 

c31 = cost(3,1); 

c32 = cost(3,2); 

c33 = cost(3,3); 

これは、このタイプの行列に使用したい式です。

lambda = 
((8*c13*c23*c33*Pdt)+(4*c12*c23*c33)+(4*c13*c22*c33)+(4*c13*c23*c32)) ./ (4*c23*c33)+(4*c13*c33)+(4*c13*c23)); 

ので、私は3行列による4を作りたい場合は、私の問題は、であり、それはこのような行列が生成されます。

cost = [c11 c12 c13    

     c21 c22 c23 

     c31 c32 c33 

     c41 c42 c43] 

私はこの行列に使用する式(4 3)は全く異なっている。それで、どうやってそれをやるの? if else文を使う必要がありますか?または中にする?誰も私がこれを解決するのを助けることができます誰でもコードを作成できますか?

+2

あなたのタイトルはいつもあなたが持っている問題の種類を記述する必要があり、SOコミュニティは、あなたがあなたがここに掲載するので、「コーディングで立ち往生」していると仮定します。 – Calum

答えて

1

なぜ変数c11、c12、...を明示的に作成していますか?確かに、それはちょうどこのようなあなたの式の行列にアクセスするために容易になるだろう:

ラムダ= ((8 *コスト(1,3)*コスト(2,3)*コスト(3,3)*コスト(2,3)*コスト(3,3)+(4 *コスト(1,3)*コスト(2,2)* c(3,3) (2,3)*コスト(3,3))+(4 *コスト(2,3)*コスト(3,2)

あなたの質問には、はい、単純なものを使用してください(コスト(1,3)*コスト(3,3))+(4 *コスト文の場合は、このように:

if size(cost、1)== 3

%equation for matrix size 3x3 

%equation for matriz size 4x3 
+0

ありがとうございます=) – raymond