【发布时间】:2013-12-17 18:43:27
【问题描述】:
我正在尝试在 Matlab 的父脚本中执行 parfor 循环。
我想计算期权价格的隐含波动率,然后在预先存在的数据集中创建一个包含结果的新列。
load('/home/arreat/Casino/names.mat')
name = char(names(i))
%Loop over n rows to populate columns in dataset named using variable 'name(i)'
rows = eval(['length(',name,')'])
parfor n=[1:rows]
%Calculate implied volatility using blsimpv(Price, Strike, Rate, Time, Value, Limit,Yield, Tolerance, Class)
BidIV = blsimpv(eval([name,'.UnderlyingPrice(n)']),...
eval([name,'.Strike(n)']),...
RiskFree/100,...
eval([name,'.Lifespan(n)'])/252,...
eval([name,'.Bid(n)'])+.01,...
10,...
0,...
1e-15,...
eval([name,'.Type(n)'])...
)
eval([name,'.BidIV(n,1) = double(BidIV);']);
%Loop and add implied volatility (BidIV) to a column with n number of
%rows.
end
parfor 循环中的“eval()”计算会出现问题。 Mathworks 建议我应该将整个脚本变成一个函数,然后在 parfor 循环中调用该函数。
我在做这件事时,有什么想法吗?
【问题讨论】:
-
那么,问题出在哪里?摆脱评估?
-
是的,我正试图摆脱 parfor 循环中的 eval
标签: matlab for-loop parallel-processing