函数“定期返回”的错误示例?

时间:2019-07-29 19:22:05

标签: matlab

对于我自己的数据集,我想使用自2006年以来包含在Matlab中的periodreturns函数(并且我使用的是2015版),但是我无法使其正常工作,也无法在线找到有关该问题的任何信息。第一步,我想运行示例代码。

这是MathWorks(https://ch.mathworks.com/help/finance/periodicreturns.html)提供的示例代码:

Dates = datetime(2015,1,1:10,'Locale','en_US')';
Prices = [0.01 0.03 0.1  -0.05  0.02 0.07 0.03 -0.01 -0.02 0.01]';
TotalReturnPrices = table(Dates,Prices);
TotalReturn = periodicreturns(TotalReturnPrices)

不幸的是,我总是收到以下错误消息:

Undefined function 'isnan' for input arguments of type 'table'.

Error in periodicreturns>dailyreturnspersecurity (line 85)
trprc(isnan(trprc(:,2)),:) = [];

Error in periodicreturns (line 50)
        tmptr{i} = dailyreturnspersecurity(trprc(:,[1,i+1]));

我尝试了以下操作: -一种变体,其中选择一个单元格作为输入而不是表格(导致出现不同的错误消息) -重新启动工作区 -谷歌搜索,但仅发现数据集中存在的NaN问题 -调整功能,因此它不检查NaN(因为示例中不存在),这导致我遇到了一个新问题:

Undefined operator '-' for input arguments of type 'table'.

Error in periodicreturns1>dailyreturnspersecurity (line 93)
    tr(tindex,2) = (pp - pp0)/pp0;

Error in periodicreturns1 (line 50)
        tmptr{i} = dailyreturnspersecurity(trprc(:,[1,i+1]));

有什么想法我想念的吗?

1 个答案:

答案 0 :(得分:0)

函数periodicreturns 当前目前支持table variables as inputs,但是在您使用的旧版MATLAB中不支持它们。如果您有MathWorks帐户,则可以查看R2015b here的较旧文档,该文档仅将数字矩阵指定为该函数的有效输入。 very next release (R2016a)是在添加对表输入的支持时。

似乎也不支持将单元格数组作为输入。以下是旧版文档说明应格式化输入的方式:

  

根据给定证券的总回报价格的资产数量(NUMOBS)矩阵的观察次数(NASSETS + 1)。第1列包含MATLAB®序列号。其余列包含总退货价格数据。

因此,您需要使用date numbers而不是datetime对象。