教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 初中教育 >

matlab数据的读入和预处理

来源:网络收集 时间:2026-08-27
导读: matlab数据的读入和预处理 第三讲 数据的读入和预处理 在金融研究以及金融理论的实际应用上,大量的金融数据是不可或缺的。金融理论提供了丰富的模型,但理论模型的实证检验需要大量的金融数据。金融模型的实际应用也需要大量金融数据来估计或标定其中的参数

matlab数据的读入和预处理

第三讲 数据的读入和预处理

在金融研究以及金融理论的实际应用上,大量的金融数据是不可或缺的。金融理论提供了丰富的模型,但理论模型的实证检验需要大量的金融数据。金融模型的实际应用也需要大量金融数据来估计或标定其中的参数。比如:资本资产定价模型(CAPM)中β

值的估计;期权定价中标的资产收益率的波动率估计等都需要实际数据。MATLAB提供了在主窗口直接输入和利用xlsread、textread、fopen等函数直接读取数据两种方式。在主窗口直接输入数据对于少量数据是合适的,但金融领域的研究者和金融行业的金融理论应用人士经常面临大量的金融数据,利用MATLAB提供的内部函数直接读取数据是非常必要的。由于大部分的金融数据来自各种机构提供的数据库,这些数据库数据的输出大多会支持EXCEL和文本文件的输出格式。因此本节介绍如何利用MATLAB提供的xlsread和textread函数来读取*.xls和*.txt数据文件。

1.EXCEL数据文件的读取

利用MATLAB提供的函数xlsread可以方便地读取数据文件中的数值型数据,对于EXCEL文件中的字符型变量xlsread将不读取或以NaN(在MATLAB中NaN表示“不是一个数”)表示。其最简单的调用格式为在MATLAB命令窗口输入:x=xlsread('filename'),其中filename为在MATLAB自动搜索文件夹下的EXCEL文件名,文件filename中的数值型数据矩阵赋值给变量x。filename可以不带后缀.xls。

上证综合指数EXCEL文件

下面以上证综合指数为例,给读者介绍如何使用xlsread读取数据。图显示了上证综合指数的EXCEL文件中的部分数据(仅显示了其中前20行的数据),其中EXCEL文件中的第一列为日期,第二列为与第一列日期相应的上证综合指数。由于日期型数据在EXCEL中是可以与数值相互转化的,因而xlsread是可以读取日期型数据的。如果该EXCEL文件位于MATLAB自动搜索文件夹下,比如:D:\matlab\work\index.xls。则在MATLAB命令窗口输入:x=xlsread('index')

matlab数据的读入和预处理

后得到变量x,x为n行2列的矩阵,第一列为日期,第二列为指数。其中n与该文件中的数据长度一致,如数据包含1000天的上证综合指数,则n为1000。这里注意两点:(1)读出的数据赋值给变量x,x的第一列为日期,但在MATLAB

的输出格式中变成了数值型。比如图1.1中的第一个日期在EXCEL表中显示为1990-12-19,如果读者在EXCEL表中将其转换为数值型,则在EXCEL表中显示为33226。因此,在MATLAB读入该文件的时候该日期就变成了数值33226;(2)MATLAB提供了一个数值与表示日期的字符型变量相互转换的函数datenum(将日期转换为数值)和datestr(将数值转换为日期),但这种转换与EXCEL中数值和日期型变量的转换是有差异的。在MATLAB中以0000年1月1日作为起点,将这一天转换为数值1,相应的0000年1月2日就转换为2,而在EXCEL中以1900年1月1日为起点,将这一天转换为1。因此,前面的例子中的数据读入MATLAB,并赋值给变量x后,如果要将日期还原到正确的日期,则在MATLAB命令窗口下输入:x(:,1)=x(:,1)+datenum('30-Dec-1899');即可。当然也可以直接调用MATLAB内部函数x2mdate,在MATLAB命令窗口下输入:x(:,1)=x2mdate(x(:,1))进行转换。

综合以上例子,可以在MATLAB命令窗口下输入以下命令得到图1.2。%后面的内容表示对命令的解释和说明。

clear

x=xlsread('index');%读取EXCEL文件

x(:,1)=x(:,1)+datenum('30-Dec-1899');%将日期还原

h=figure;%生成空的图形

set(h,'color','w');%将图的背景颜色设定为白色

plot(x(:,1),x(:,2));%以x的第一列为横轴第二列为纵轴作图

datetick('x',23);%将横轴转成日期格式'mm/dd/yyyy'

xlabel('Date');%生成横坐标标记

title('Shanghai Composite ');%生成图形名称

上证综合指数走势

matlab数据的读入和预处理

初次使用xlsread读取数据文件的读者可能会出现打不开文件的情形。下面就读者可能经常碰到的一些问题做出说明。

有些读者在可能MATLAB命令窗口下输入

x=xlsread('index');后MATLAB提醒找不到该文件。读者可以在MATLAB中File菜单中选择Set Path进行路径设置,将EXCEL文件index.xls所在的文件夹置于搜索路径之下,然后点击Save进行保存即可。有些读者可能碰到无法读取数据的情形,MATLAB提醒文件不包含有效的EXCEL数据。这时,读者可以将EXCEL文件中说明性的字符,比如:对每一列变量做出说明的某些字符等整行删除即可。比如:在上海大智慧投资咨询公司提供的大智慧平台下载数据得到EXCEL文件数据如图所示,则读取文件时就会出现这样的错误。这时可以将文件中的第一行和第二行直接整行删除就可以了。通常在这样处理后在EXCEL数据中某些列中仍夹杂着一些空格,这时MATLAB读入时将其以NaN代替。也有些读者在MATLAB命令窗口下输入x=xlsread('filename');后出现这样的情形,即得到的变量x的列数比EXCEL文件中数据的列数少,这可能是EXCEL数据文件中的第一列或前面的几列数据为字符型,MATLAB在读入数据时忽略了这些列。

大智慧下载数据

使用xlsread读取数据文件有两个明显的缺点。一是xlsread不能读取字符型变量,因此要读取某些包含字符型变量的文件就不能使用xlsread。另外EXCEL文件中的数据长度是有限定的,EXCEL2000单个工作表的最大行数为65536,每一行最大列数为256列。但有时候要处理的金融数据量会超出这个范围,这时候不得不将数据分拆成几个EXCEL文件后分别用xlsread读取。而MATLAB提供的textread函数可以很好地解决以上两个问题。

2.文本数据文件的读取

对于*.txt、*.csv等类型的数据文件,如果知道数据文件中每一列数据的类型,即字符型、数值型等。则可以使用MATLAB提供的textread函数方便地进行读取。对于textread函数的详细了解可以在MATLAB命令窗口下输入help textread或doc textread来了解。

下面以位于MATLAB自动搜索文件夹下的上证综合指数数据文件,比如:

matlab数据的读入和预处理

D:\matlab\work\000001.txt,为例来进行解释如何调用textread。图显示了该文件的部分数据,该数据文件包含7列的数据,分别为时间、开盘价、最高价、最低价、收盘价、成交量和成交额,数据包含了了1990年12月19日到2006年9月27日上证综合指数行情。在MATLAB命令窗口下输入以下命令:

[a,b,c,d,e,f,g]=textread('000001.txt','%s%f%f%f%f%f%f','headerlines',

1);

其中上述命令中的输出变量a,b,c,d,e,f,g分别表示时间、开盘价、最高价、最低价、收盘价、成交量和成交额列向量,a为表示时间的字符型变量。textread函数的输入部分中,'000001.txt'表示文件名;%s表示以字符型方式读入变量;%f表示以浮点数值型方式读入变量;'headerlines',1表示文件的第一行为标题,不需要读入。注意:textread函数的输入部分中'%s%f%f%f%f%f%f'是与输出a,b,c,d,e,f,g一一对应的;另外这里文件名的后缀.txt不能省略,否则MATLAB会给出不能找到该文件的提醒。这个例子有点特殊,第一列的时间数据也可以以浮点数值型方式读入。在MATLAB命令窗口下输入以下命令:

[a,b,c,d,e,f,g]=textread('000001.txt','%f%f%f%f%f%f%f','headerlines',

1);

但这时读出的日期变成了数值。比如:2006年9月27日就变成了数值 …… 此处隐藏:5902字,全部文档内容请下载后查看。喜欢就下载吧 ……

matlab数据的读入和预处理.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1565323.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)