2012-12-02 58 views
0

任何想法爲什麼Matlab可以像這樣的行爲?函數sum()的奇怪行爲

>> sum([0 0 0]) 
Subscript indices must either be real positive integers or logicals. 

>> sum([1 1 1]) 

ans = 

    4  4  4 

與此戰鬥超過2小時,仍然無法得到它。 這是我在發生這種情況之前運行的代碼。 運行此代碼之前 - sum()函數可以正常工作。

price = 100; 
vola = 0.2; 
r = 0.05; 
n_step = 3; 
dt = 1/250; 
S0 = 100; 
T = 1; 

s = [1 0 0 0;1 2 0 0;1 2 3 0; 1 2 3 4]; 
prob = 0.5; 
n_path = 2^n_step; % bottle neck for binomial approach 
avg_price = zeros(n_path, 2); % first column - probability, second - average price 
path_matrix = zeros(n_path, n_step); % all possible paths 1-up, 0-down 
for k = 0:n_path-1 
    path_matrix(k+1, :) = de2bi(k,'left-msb',n_step); 
end 

node_matrix = path_matrix; 
for k=2:n_step 
    node_matrix(:, k) = node_matrix(:, k-1) + node_matrix(:, k); 
end 
node_matrix = node_matrix + 1; 

% go through all possible paths and calculate sum of prices 
for k = 1:n_path 
    % probability of path 
    n_up = sum(path_matrix(k, :)); 
    avg_price(k, 1) = prob^n_up*(1 - prob)^(n_step - n_up); 

    % get sum of prices over all states for this path 
    sum = s(1, 1); 
    for p = 1:n_step 
     sum = sum + s(p+1, node_matrix(k, p)); 
    end 
    avg_price(k, 2) = sum; 
end 

回答

2

你覆蓋的功能sum,現在它被認爲是一個局部變量

sum = s(1, 1); 

因此你隱藏sum的功能。

更改變量的名稱和做

clear sum 

+0

f..k,太蠢了(非常感謝!! – Volder

+0

@Volder,歡迎您。 – Acorbe