matlab教学(2)——数据导入
来源:互联网 发布:合肥c语言培训机构 编辑:程序博客网 时间:2024/05/21 09:57
文件的打开与关闭
文件的打开
- fid= fopen(文件名,打开方式)
- fid用于存储文件句柄值
- 其他函数可以利用它对该数据文件进行操作。如果返回的句柄值大于0,则说明文件打开成功
- r’表示对打开的文件读数据,‘w’表示对打开的文件写数据,‘a’表示在打开的文件末尾添加数据
文件的关闭
- sta=fclose(fid)
- 文件在进行完读、写等操作后,应及时关闭
- sta表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回–1。
二进制文件的读写操作
使用导入模板读取二进制数据
1.选择File→Import Data选项,弹出一个文件选择对话框;也可以使用uiimport函数来打开导入数据模板。
2. 在文件选择对话框中选择想导入数据的二进制数据文件,然后单击Open按钮,导入数据模板就会打开该文件并准备处理其内容。
3. 选择要导入的变量。在默认情况下,导入模板将要建立的变量取决于文件中的数据类型。
4.单击Finish按钮完成数据的导入。
使用导入函数读取二进制数据
(要从命令行或一个 M 文件中读取二进制数据,必须使用 MATLAB 导入函数)
- load
- aviread
- cdfread
- hdf
- imread
- wavread
- xlsread
二进制数据的存写
要以一种标准二进制格式来存写二进制数据,可以使用 MATLAB 提供的高端函数,函数的选择取决于要存写数据的类型
- save
- avifile
- cdfwrite
- hdf
- imwrite
- wavwrite
- xlswrite
例子一
若要以AVI格式来存写MATLAB图像,步骤如下:
1. 用avifile函数建立一个AVI文件。
2. 用addframe函数来捕捉图像并保存到AVI 文件中。
3.使用close函数关闭AVI文件。
(注意:若要将一个已经存在的MATLAB电影文件转换为AVI文件,需使用函数movie2avi)
函数原型为:
movie2avi(mov,filename)
movie2avi(mov,filename,param,value,param,value…)
使用文件I/O函数
前面介绍的都是MATLAB中的一些高级函数,除此之外MATLAB还包含了一组低端的文件I/O函数,如前面介绍的所有文件的打开和关闭函数:fopen函数和fclose函数。这些函数是建立在ANSI标准C库中的I/O函数。要读写这些数据,需进行以下几步:
1.使用fopen函数打开文件。
fopen函数将会返回一个文件句柄,通过它,就可以使用其他所有的低端文件I/O函数。
2.对文件进行操作,如:
读写二进制数据
格式化读写文本数据等。
二进制数据的读取
- 使用fread 函数可以读取二进制文件的数据,并将数据存入矩阵
- [A,COUNT]=fread(fid,size, precision)
- 其中A用于存放读取的数据
- COUNT返回所读取的数据元素个数,
- fid为文件句柄,
- size为可选项,若不选用则读取整个文件内容,
- 若选用则它的值可以是下列值:
1.N表示读取 N个元素到一个列向量。
2.Inf表示读取整个文件。
[M,N]表示读数据到M×N的矩阵中,数据按列存放。- precision代表读写数据的类型
写二进制文件
- 使用fwrite 函数按照指定的数据类型将矩阵中的元素写入到文件
- COUNT=fwrite (fid, A, precision)
- fid为文件句柄
- A用来存放写入文件的数据
- recision用于控制所写数据的类型,其形式与fread函数相同。
文本数据文件的读写操作
读文本文件
- [A,COUNT]= fscanf (fid, format, size)
- COUNT返回所读取的数据元素个数
- format用以控制读取的数据格式,由%加上格式符组成,常见的格式符有d,f,c,s。
- size为可选项,决定矩阵A中数据的排列形式
- fscanf可以读取txt也可以读取dat。
- Load读取数值数据,并要求数据必须是长度相同的
- 读取双精度浮点数——%g
- 读入一个字符串,遇空格结束 ——%s
写文本文件
- COUNT= fprintf(fid, format, A)
- 其中A存放要写入文件的数据
先按format指定的格式将数据矩阵A格式化,然后写入到fid所指定的文件。格式符与fscanf函数相同。
clearclcclose all N = 100; R = rand(1, N); fid = fopen('ttt.txt', 'wt'); for k = 1: N; p = num2str(R(k)); fprintf(fid, '%c', p); fprintf(fid, '%c\n', ' '); end fclose(fid);
常用读取数据文件的高级函数
- textread函数从数据文(txt/dat/m/csv)中读取格式化的数据或字符,并可以指定变量名,格式如下: [a,b,c,…]=textread(‘文件名’,格式);
最简单的用法还是: c=textread(‘文件名’) - xlsread可以直接读取Excel文件,并可以指定变量名,格式如下:d=xlsread(‘C:\matlab2009b\work\a.xls’);
- excel link 是 matlab 与 excel 交叉使用的一个加载宏.可见http://blog.csdn.net/taoyingzhushui/article/details/7547934
- feof 函数
用来判断是否到达文件末尾。调用方式如下:
eofstat=feof(fid)fid为文件句柄。eofstat是返回值,当到达文件末尾时,eofstat为1;否则为0——若要重新设置指针到起始位置,就可以直接使用frewind函数。或者关闭后重新打开。
如果不需要考虑读取文件夹和文件的顺序问题,可以使用genpath命令。
1.如还是需要读取“D:\big data\”目录下面文件夹,
2.p = genpath(fullfile(‘D:’,‘big data’));
3.语句将“D:\big data\”文件夹下面的文件读入字符数组p中,所有文件夹的目录都存储在一个字符数组p中并以分号作为分割,
4.使用时需要将改字符数组中各个文件夹的路径分开。
如果需要读取一个文件夹中的所有文件并且不需要按照顺序读取,可以使用
- A = dir(fullfile(path{i,1}, ‘*.bmp’))
- 该语句将构建一个结构体数组,数组中元素数量就是文件夹中文件数量,每个元素的.name字段,就是一个文件的文件名。
例子二
function dataout = just_do_it(filein, fileout, line)fidin = fopen(filein, 'r');fidout = fopen(fileout, 'w');nline = 0;while ~feof(fidin) tline = fgetl(fidin); nline = nline + 1; if nline == line fprintf(fidout, '%s\n', tline); dataout = tline; endendfclose(fidin);fclose(fidout);
例子三
clearclcclose allpath = {}; %字符串数组for i = 1:21 path = [path ; 'D:\big data\' num2str(i) '\'];endfor i = 1:21 %读取文件夹 for j = 1:24 %读取24小时的图像文件 filename = [path{i,1} num2str(j) '.bmp'] endend% 源自:百度的matlab吧:http://tieba.baidu.com/f?kz=89539696% 《matlab中读取多个文件夹和多个文件的方法》
例子四
clearclcclose allp = genpath(fullfile('D:', 'big data'));length_p = size(P);length_p = length_p(1,2);path = {}; %建立一个单元数组,数组的每个单元中包含一个目录temp = [];for i = 1: length_p if p(i) ~= ';' temp = [temp p(i)]; else temp = [temp '\']; path = [path; temp]; temp = []; endend%上面一段程序将字符数组p中的各个文件夹%路径分开,并以列向量形式存储在元胞数组path中。
例五:使用matlab的textread函数批量导入里面全部是纯数值的文本
源自http://blog.163.com/wujiaxing009@126/blog/static/719883992012554310348/
clearclcclose allgetfilename=ls('d:\big data\*.txt');filename = cellstr(getfilename); %将字符型数组转换为cell型数组,相当于str2cell,但是matlab中没有后面一个函数num = length(filename);%得到所有txt文件的个数stock(num) = struct('Name',filename(num),'Data',textread(filename{num}));%使用struct关键字建立结构体%注意filename(num)与filename{num}所得到的结果是不同的,前者有一对for ii=1: num - 1 stock(ii) = struct('Name',filename(ii),'Data',textread(filename{ii}));end
文件读取的例子
读取图像
- 用imread函数读取图像文件,文件格式可以是TIFF、JPEG、GIF、BMP、PNG等。比如f = imread(‘chestxray.jpg’);
- 读进来的图像数据被保存在变量f中。如果图片是彩色的,可以用rgb2gray转换成灰度图:
读取数据库数据
- 连接
调用格式:
conna=database(‘datasourcename’,’username’,’password’);
如conna=database(‘SampleDB’,”,”);其中SampleDB为上文中创建的数据源名称,当默认情况下,数据库文件的username和password为空。 - 建立并打开游标——exec
调用格式:
curs=exec(conna,’sqlquery’);
如curs=exec(conna,’select * from database’)
其中conna为上文中链接对象,select * from database表示从表database中选择所有的数据,为SQL语句。 把数据库中的数据读取到Matlab中——fetch
调用格式:
curs=fetch(curs,RowLimit);
Data=curs.Data;%把读取到的数据用变量Data保存.
如curs=fetch(curs);
把所有的数据一次全部读取到Matlab中,RowLimit为每次读取的数据参数的行数,默认为全部读取,但是全部读取会很费时间(和计算机性能很大关系)。clearclcclose allconn = database(databaseName,userName,password);dbmeta = dmd(conn);tablesList = tables(dbmeta,strCatalog);%获得表名curs0=exec(conn,'select count(*) from stock_vw');setdbprefs('datareturnformat','numeric'); tmp0=fetch(curs0);data_total=tmp0.data;
数据文件定位
- MATLAB提供了与文件定位操作有关的函数fseek和ftell。fseek函数用于定位文件位置指针
- status=fseek(fid, offset, origin)
- 其中fid为文件句柄,offset表示位置指针相对移动的字节数,origin表示位置指针移动的参照位置。若定位成功,status返回值为0,否则返回值为–1。
- ftell函数返回文件指针的当前位置
- position=ftell (fid)
- 返回值为从文件开始到指针当前位置的字节数。若返回值为–1表示获取文件当前位置失败。
- matlab教学(2)——数据导入
- matlab数据导入——从Excel导入
- Matlab数据导入方法
- Matlab数据导入导出
- chipscope数据导入matlab
- chipscope数据导入matlab
- matlab 数据导入
- MATLAB数据导入导出
- matlab导入excel数据
- MATLAB导入json数据
- matlab中导入excel中的数据(转自“百度经验”)——亲测可用
- Vivado使用的经验和技巧分享——Vivado中数据导入MATLAB的方法
- Python数据分析利器——numpy简单教学
- Python数据分析利器——pandas简单教学
- MATLAB中导入数据:importdata函数
- Matlab入门一(导入数据)
- matlab和excel数据的导入
- 从sqlserver中导入数据到matlab。
- 制作自己的图像数据 (1)
- 1075. 链表元素分类(25)
- OpenCV3.2 ORB特征点 FLANN BruteForceMatcher匹配
- N皇后问题
- 模板类实现顺序表
- matlab教学(2)——数据导入
- 【JAVA_SE】作业练习1016
- 数据结构之二叉树
- java实现对象转换为map、xml字符串转化为map、map转化为xml字符串
- Java 线程池是如何工作的
- 脑补mysql-shell
- 洛谷P3929波动序列
- 嵌入式开发(ARM9)学习笔记(七)-Windows和Linux文件共享
- jstree使用方法