2017-02-10 74 views
-1

早上好,简单的Matlab循环创建

我对循环有怀疑。我认为这很简单,但我不知道如何去做。我会试着简化这个问题。

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

我需要做的是以下几点。创建三个新的价值观,这样做:

第一环:

> 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 

例行在于使用始终帕拉姆值 '按订单'并使用倒数第二个值乘以x向量,然后乘以倒数第二个和以下。我不知道如何管理它,因为它必须创造三个新的时代。

任何意见将不胜感激! :)在此先感谢

+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)不需要两个,就像你刚才添加的所有yx结束。下面是添加另一个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