2017-10-26 10 views
2

ベクトルがz1 z2 z3 z4bであり、行列がD1 D2 D3 D4であるとします。単純再帰関係

私が構築したい:

b1 = D2*z2 + D3*z3 +D4*z4 -b

b2 = D1*z1 + D3*z3 +D4*z4 -b

b3 = D1*z1 + D2*z2 +D4*z4 -b

b4 = D1*z1 + D2*z2 +D3*z3 -b

私は、細胞抽出液中で私のzベクトルとD行列を格納するための計画forループでbを作成します。例えばもちろん

for i = 1:3 

    b(i) = D{i+1}*z{i+1} + D{i}*z{i}; 

end 

それは各iステップでD{i}*z{i}を含むので、それは確かに失敗しました。私の仕事を達成するのを助けてくれますか?

答えて

2

このようにすることができます(再帰はありませんが、ペアワイズ製品は一度だけ計算されます)。

pairs = zeros(size(D{1},1), 4); 
for ii=4:-1:1, 
    pairs(:,ii) = D{ii}*z{ii}; 
end 

あなたはすべてのペアの製品を持っていたら、あなたは合計を取ることができ

all_sum = sum(pairs, 2) - b_vec; % D1*z1 + D2*z2 + D3*z3 +D4*z4 -b 

取得するために、あなただけの合計から減算pairs(:,ii)に必要な適切なb_i

for ii=4:-1:1 
    b{ii} = all_sum - pairs{ii}; 
end 
+1

ありがとうございます。問題の良好な観察。 – nam

関連する問題