【问题标题】:Matlab Error A(I) = BMatlab 错误 A(I) = B
【发布时间】:2014-03-27 15:54:07
【问题描述】:

我目前正在研究二项式期权定价。我已经编写了下面的代码,当您一次输入一个变量时,它可以正常工作。但是,输入每组值非常繁琐,我需要能够分析大量数据。我为每个变量创建了数组。但是,我不断收到错误消息; A(I) = B,B中的元素个数必须等于I。函数如下所示。

function C = BinC(S0,K,r,sig,T,N);

% PURPOSE: 
% To return the value of a European call option using the Binomial method 
%-------------------------------------------------------------------------
% INPUTS:
% S0      - The initial price of the underlying asset
% K       - The strike price 
% r       - The risk free rate of return, expressed as a decimal
% sig     - The volatility of the underlying asset, expressed as a decimal
% T       - The time to maturity, expressed as a decimal
% N       - The number of steps
%-------------------------------------------------------------------------

dt = T/N;
u = exp(sig*sqrt(dt));
d = 1/u;
p = (exp(r*dt) - d)/(u - d);

S = zeros(N+1,1);           

% Price of underlying asset at time T
for n = 1:N+1
S(n) = S0*(d^(N+1-n))*(u^(n-1));
end

% Price of Option at time T
for n = 1:N+1
C(n) = max(S(n)- K, 0);
end

% Backtrack to get option price at time 0
for i = N:-1:1
for n = 1:i
C(n) = exp(-r*dt)*(p*C(n+1) + (1-p)*C(n));
end
end

disp(C(1))

导入数据后,我将其输入到命令窗口中。

for i=1:20
w(i)= BinC(S0(i),K(i),r(i),sig(i),T(i),N(i));
end

当我输入 w 时,我得到的只是 w = []。我不知道如何使 A(I) = B。如果这是一个非常愚蠢的问题,我深表歉意,但我是 Matlab 新手,需要帮助。谢谢

【问题讨论】:

    标签: arrays matlab elements


    【解决方案1】:

    您的函数计算整个向量C,但仅显示C(1)。这种显示具有欺骗性:它让您认为该函数正在返回一个标量,但事实并非如此:它返回的是整个向量 C,您尝试将其存储到一个标量位置。

    解决方法很简单:把你的函数定义改成这个(重命名输出变量):

    function out = BinC(S0,K,r,sig,T,N);
    

    然后在函数的最后一行,去掉disp,替换为

    out = C(1);
    

    要验证所有这些(与您的非工作示例相比),请尝试在命令行中自行调用它,并检查输出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-29
      • 2021-04-09
      • 1970-01-01
      • 1970-01-01
      • 2013-02-27
      相关资源
      最近更新 更多