2017-02-10 13 views
-1

おはよう、単純なMatlabループの作成

私はループについては疑問があります。私はそれが本当のシンプルだと思うが、私はそれをやる方法を得ていない。私は質問を簡素化しようとしています。

x= [... ; 106; 112; 111] 
param= [1.2 ; 1.5; 1.7] 

私がする必要があるのは以下のとおりです。これを行うことにより、3つの新しい値を作成します。

第一ループ:

> y(k) = a1*x(k-1) - a2*x(k-2) - a3*x(k-3) 
> y(k) = (1.2*111)+(1.5*112)+(1.7*106) = 
> y(K) = 481, 4 result of the new value 

第二ループ:

x= [... ; 106; 112; 111; 481,4] % this is the new added value to the vector: 
    y(k) = a1*x(k-1) - a2*x(k-2) - a3*x(k-3) 
    y(k) = (1.2*481,4)+(1.5 *111)+(1.7*112) = 
    y(K) =   result of the 2 new value 

ルーチンは '順序によって' いつものparam値を使用することです最後から2番目の値を使ってxベクトルを乗じると、次のようになります。私は3つの新しい時代を作り出さなければならないので、それを管理する方法を知らない。

アドバイスをいただければ幸いです! :)ありがとうございました

+0

質問はかなり曖昧です。 a1からa3とは何ですか?あなたは 'y(k)=(1.2 * 111)+(1.5 * 112)+(1.7 * 106)= y(K)=新しい値の結果で何をしますか?実際に使用できるベクトル 'x'を指定することもできますし、サイズやその他の情報を記述することもできます。 – JCKaz

+0

あなたがしようとしているのは、 'x'と反転した' param'( 'conv(x、flip(param))'とか 'conv(x、[0; flip(param) )]) '(x(k)はスキップされるので)。それがあなたが期待しているものかどうか試してみてください。 – Florian

+0

お返事ありがとうございました! JCKaz、a1、a2 ... ara paramベクトル(a1 = 1.2、a2 = 1.5、a3 = 1,7)。たとえば、x = [30; 41; \t 71; 106; 112; 111](ただし、最後の3つの値が必要です)。 –

答えて

0

y(またはx)は、の末尾にすべてyを追加するだけで、両方の必要はありません。ここに別のN値を追加するための簡単な解決策は次のとおりです。

N = 103; 
y = zeros(N,1); 
y(1:3) = [106 112 111]; % this is the end of your x 
param = [1.2 ; 1.5; 1.7]; 
for k = 4:N 
    y(k) = (param(1).*y(k-1))+(param(2).*y(k-2))+(param(3).*y(k-3)); 
end