问题描述
我绝对是新程序员,我完全陷入Matlab中的一个问题。
我们需要计算不同折现率的债券价格。债券的价格由给定年份的现金流量(给定)之和除以折扣系数得出。
如果只有一个比率,这是一个相当简单的功能。但是,当存在比率向量时,由于矩阵大小,它会变得复杂,因此您需要使用for循环。我的代码如下:
function c = bond_price(DF,T,R)
c = sum(DF./(1+R).^T);
end
DF1 = [62.5 62.5 62.5 62.5 62.5 62.5 62.5]; %this is given
T1 = (1:7); %also given
R1 = (0 : 0.01 : 0.10); %also given
prices = zeros(1,length(R1);
for k = 1 : length(R1)
prices(k) = prices + vec_sum(DF1,T1,R1(k));
end
有人知道为什么这行不通吗?
解决方法
Q :“ ...为什么不起作用?”
第一个原因(可在此处修复):
syntax error
>>> prices = zeros(1,length(R1);
^
第二个原因(此处不确定):
function c = bond_price( DF,T,R )
c = sum( DF./( 1 + R ).^T );
end
DF1 = [62.5 62.5 62.5 62.5 62.5 62.5 62.5]; %% this is given
T1 = (1:7); %% also given
R1 = (0 : 0.01 : 0.10); %% also given
%% ---------------------------------<as-was>-state
%% syntax error
%%
%% >>> prices = zeros(1,length(R1);
%% ^
prices = zeros( 1,length( R1 ) );
for k = 1 : length( R1 )
prices(k) = prices + vec_sum( DF1,T1,R1(k) );
end
%% --------------------------------<syntax-repaired>-state
%% error: 'vec_sum' undefined near line 16 column 26
%%
随意修复您的代码并re-test问题,因为vec_sum()
应该位于源代码中的“附近”,不是吗?