%读取数据 [num txt raw]=xlsread('final3.xls'); save('zyx4data') %----------number1------- %logret logret=log(num(2:end,1))-log(num(1:end-1,1)); %date' %date=x2mdate(datenum(alldata(2:end,1))); date=raw(3:end,1); %dealnum dealnum=num(2:end,2); %双坐标轴画出收益率和交易量 [hAx,hLine1,hLine2]=plotyy(date,logret,date,dealnum); %横轴日期、收益率红实线、交易量黑色虚线 title('上证指数收盘价收益率及交易量') xlabel('日期'); ylabel(hAx(1),'收益率'); ylabel(hAx,'交易量'); set(hLine1,'color','red'); set(hLine2,'color','black','linestyle','--')这段代码问题在哪
时间: 2023-11-24 19:08:05 浏览: 88
这段代码的问题在于:
1. 在使用 x2mdate 函数将日期转换为 Matlab 内部日期格式之前,需要将日期字符串先转换为 Matlab 内部日期序列,即使用 datenum 函数将日期字符串转换为 Matlab 内部日期序列。因此,将代码中的 "x2mdate(datenum(alldata(2:end,1)))" 修改为 "x2mdate(datenum(raw(3:end,1)))"。
2. 在使用 plotyy 函数时,需要将两个 y 轴对应的数据分别传入到函数中。因此,将代码中的 "ylabel(hAx,'交易量')" 修改为 "ylabel(hAx(2),'交易量')"。
修改后的代码如下所示:
```
% 读取数据
[num, txt, raw] = xlsread('final3.xls');
save('zyx4data')
% 计算收益率
logret = log(num(2:end, 1)) - log(num(1:end-1, 1));
% 处理日期
date = raw(3:end, 1);
date = x2mdate(datenum(date));
% 处理交易量
dealnum = num(2:end, 2);
% 双坐标轴画出收益率和交易量
[hAx, hLine1, hLine2] = plotyy(date, logret, date, dealnum);
% 设置图形标题和轴标签
title('上证指数收盘价收益率及交易量')
xlabel('日期');
ylabel(hAx(1), '收益率');
ylabel(hAx(2), '交易量');
% 设置线条颜色和样式
set(hLine1, 'color', 'red');
set(hLine2, 'color', 'black', 'linestyle', '--');
```
阅读全文