0

tr9sh,感谢您编辑问题,但我必须澄清我没有要求计算每日回报。我想要的是通过在不输入数据 'price' 的情况下定位日期行来计算年回报率。公式如下所示: (price(2001/1/20)/price(2000/1/21) - 1)

'n 周期内的 n 个股票'的收盘价被导入到 Matlab 中,如下所示:

2000/1/1 23.4 78.9 ...

2000/1/2 23.3 67.1 ...

...

2001/1/1 23.2 77.1 ...

2001/1/2 24.1 78.1 ...

每列中的数字是每只股票的价格。如果我想计算他们每个人的年回报率,我的代码应该如何?

我努力了

Return = (filename(find(2001/1/1)),2)/(filename(find(2000/1/1)),2) - 1
4

2 回答 2

1

您正在尝试对字符串使用“查找”。下次尝试正则表达式(http://www.mathworks.nl/help/techdoc/ref/regexp.htmlhttp://www.mathworks.nl/help/techdoc/ref/regexpi.html用于不区分大小写的变体)

但我会做不同的事情:阅读每一行并提取日期和价格。完成后:搜索年/月和最后一天的日期(存储在单独的数组中,作为数字,而不是作为字符)。使用找到的索引从价格数组中获取对应的价格

顺便说一句,你说它存储在一个mat文件中?但你的例子更像是一个文本文件??对于文本文件,最简单的方法是使用 scanf ( http://www.mathworks.nl/help/techdoc/ref/fscanf.html ) 函数来获取数据

于 2012-02-15T13:45:46.843 回答
1

我不太清楚您想要什么,但以下解决方案可能对您有用。假设您的数据存储在矩阵中X。然后

close = X(:,2:end);
ret   = close(2:end,:) ./ close(1:end-1,:) - 1;
dates = X(2:end,1);
于 2012-02-15T14:28:08.200 回答