2015-06-17 34 views
0

我正在嘗試編寫如下所示的代碼。通過迭代改變係數的函數之和

syms c, p 
yfunc=symfun(0, [c,p]) 
y=[1 2 3 4 5] 
for j=1:5 
     func=symfun((y(j+1)-c-p*y(j))^2, [c,p]); 
     yfunc=yfunc+func; 
end 

我原本以爲'yfunc'本身有5個不同的'c'和'p'功能。但是這個代碼不起作用。首先,symfun將y(j)認作符號而不是向量y中的值。所以我也試着像下面這樣做,而不是使用symfun。

[email protected](c,p)[(y(j+1)-c-p*y(j))^2] 

但是這個既不起作用。因爲在下一行'yfunc = yfunc + func',plus在函數句柄中是不允許的。

你有什麼想法嗎?

謝謝!

回答

0

這個怎麼樣,

syms c p 

y = [1 2 3 4 5]; 
x = circshift(y, [1, 1]); 

yfunc = symfun(sum((x-c-p*y).^2), [c, p]); 

for循環會去出界了y所以我做了circshift。在分配x的行後面說x(1) = ...可以很容易地改變這種情況。祝你好運。

+0

特別感謝'symfun(sum ...'我從來不知道 – kurtkim

+0

老實說,我也沒有,我只是決定試一試。 – user1543042