Matlab大数据文本操作

来源:互联网 发布:网络道德公约 编辑:程序博客网 时间:2024/05/21 18:34
  • 前言

之前做实验接触到的文本数据都是已经处理成csv直接使用即可的,最近做的比赛是给出的txt文件,要经过一些操作才可以被使用。在此总结出一些数据操作方法,以防忘记。


  • 大数据存储格式

对于文本文件,最常用的格式是.csv,.txt,.xls,在实践中,我发现.csv是最适合大数据文本存储的,它显示清晰,最大存储量大。而.txt,.xls文件都有各自的缺点,.txt没有显示格式,阅览不方便。.xls文件有最大行限制,貌似是2的16次方,从一定程度上,它根本算不上大数据的存储方式。


  • 数据互相转化方式

我们刚刚提到的三种数据格式实际上可以互相转换,这时候excel的数据导入功能就是一个神器了。

打开excel--数据--导入数据--选择数据源(直接打开数据文件)--选取某文件--选择分隔符号--选择导入具体内容--另存为其他格式。

这样即可轻松实现文件之间的转化,但问题是如果数据量非常巨大,excel是可能存在转换错误的问题的,因此以下part介绍如何直接使用matlab读入文档,实现数据处理功能。


  • matlab读取数据方式

1.数据量不是很大的情况,自带读取函数的应用

直接使用matlab自带的各文件读取函数:
file=xlsread(‘/../../…xls); %读取xls文件
file=csvread(‘/../../…xls); %读取csv文件
如果你想选择部分数据,uiimport(‘/../’)提供了一个交互界面,可以只读取部分数据。
但是数据量很大时,这种读取方式不仅速度慢,而且有可能出错。下面介绍的几种方法灵活性高。

2.datastore函数的应用

file_src=datastore(/../../); %缓存文件
file_src.Delimiter=’ ‘; %选取文件的分隔符
file_src.NumHeaderLines=0; %从文件的哪一行开始读入,0代表全部读入,1代表第一行不读。
data_table=readall(file_src); %读取缓存文件,格式是table
data_cell=table2cell(data_table); %将table变为cell
data_mat=cell2mat(data_cell); %将cell编程矩阵
data_num=str2num(data_mat); %将矩阵变成数字矩阵(有时编码问题变量不是按照数字存储,而是字符串存储)

3.readtable函数的应用

这个函数读入后是table模式,要将其转化为数字模式,转化参考datastore的转化方式。


  • matlab大数据处理的优越性

    1. 64 位计算。64 位版本的 MATLAB 可迅速增加内存中可保留的数据量——通常可达到任意 32 位程序的 2000 倍。32 位程序限制您只能使用 2 GB 的内存,而 64 位 MATLAB 的内存可以达到操作系统的物理内存限制。对于 Windows 8,台式机内存为 500 GB,Windows Server 内存为 4 TB。
    2. 内存映射的变量。 借助 MATLAB 中的memmapfile 函数,您可以将文件或文件的一部分映射到内存中的 MATLAB 变量。这样,您就可以高效访问磁盘上由于太大而无法保留在内存中或需要花太长时间而无法加载的大数据集。
    3. 磁盘变量。matfile 函数使您可以直接从磁盘上的 MAT 文件访问 MATLAB 变量(使用 MATLAB 索引命令),无需将全部变量加载到内存。这使您可以在大数据集上进行块处理,这些大数据集因为太大而无法保存在内存中。
    4. 内在的多核数学。MATLAB 中的许多内置数学函数,如fft、inv 和eig 都是多线程的。通过并行运行,这些函数充分利用计算机的多核,提供高性能的大数据集计算
    5. GPU 计算。如果您正在使用 GPU,Parallel Computing Toolbox 中的GPU 优化的数学函数可以为大数据集提供更高的性能。
    6. 并行计算。Parallel Computing Toolbox 提供 并行 for 循环 , 该循环在多核计算机上并行运行您的 MATLAB 代码和算法。如果您使用MATLAB Distributed Computing Server,则可以在机器群集上并行执行,这些机器可扩展到数千台计算机。
    7. 云计算。对于数百或数千台计算机的按需并行处理,您可以在Amazon Elastic Computing Cloud(亚马逊弹性计算云)(EC2) 上使用 MATLAB Distributed Computing Server 并行运行 MATLAB 计算。借助云计算,您无需购买或维护您自己的群集或数据中心就可以处理大数据。
    8. 分布式阵列。 使用 Parallel Computing Toolbox 和 MATLAB Distributed Computing Server,您可以处理分布在计算机群集内存中的矩阵和多维数组。使用此方法,您可以针对因太大而无法由单台计算机内存处理的大数据集,进行存储和执行计算。
    9. 流式算法。 使用系统对象,您可以对因太大或太快而无法保留在内存中的数据传入流执行流式处理。此外,您还可以使用MATLAB Coder 通过 MATLAB 算法生成嵌入式 C/C++ 代码,并针对高性能实时系统运行产生的代码。
    10. 图像块处理。使用Image Processing Toolbox中的blockproc函数,您可以处理特别大的图像,方法是每次以模块的形式高效处理它们。与 Parallel Computing Toolbox 一起使用时,在多核和 GPU 上并行运行计算。
    11. 机器学习。机器学习有助于通过大数据集提取见解和开发预测性模型。广泛的机器学习算法,包括Statistics and Machine Learning Toolbox 和Neural Network Toolbox 中提供的促进式 (boosted) 和袋装 (bagged) 决策树、K 均值和分层聚类、k-最近邻搜索、高斯混合、期望最大化算法、隐马尔可夫模型和神经网络。