当前位置:
文档之家› matlab建模数据的导入与导出
matlab建模数据的导入与导出
• 而[names, types, x, y, answer] = textread(„mydata.dat‟, „%s %s %f %d %s‟) 返回:
names = 'Sally' 'Tom' types = 'Level1' 'Level2' x= 12.3400 54.4700 y= 45 68 answer = 'Yes' 'No'
Data.txt
•ห้องสมุดไป่ตู้
三、使用textscan读取格式化文 本数据 fid=fopen(„filename„); %打开文件
C = textscan(fid, „format‟, N) ;%根据格式读N行,C{i}为 filename中的第i列 fclose(fid);%关闭文件 • 例:对前面给定的mydata.dat文件 fid=fid=fopen('mydata.dat'); C=textscan(fid,'%s %s %f %d %s') fclose(fid); C= {2x1 cell} {2x1 cell} [2x1 double] [2x1 int32] {2x1 cell} • 显然C为cell数组。C{1}保存文件第1列数据,为2x1 cell数据 C{1}{1}为‘Sally‟, C{1}{2}为‘Tom‟, • C{3}为文件中的第3列数据,为2x1 double数据,所以C{3}(1) 为12.3400, C{3}(2)为54.4700 • 类似的方法可以取出其他各列的各个数据
菜单命令:File Import Data
一、普通表格数据的读写
• 如果数据量不大,可以直接复制粘贴方式复 制到MATLAB中的指定变量。 • 当数据量较大时,先将数据复制粘贴到txt文 件或m文件并保存为纯文本文件,然后在程序 中通过函数dlmread或textread读取给指定变量。
dlmread:读取有分隔符的ASCII文件 语法 到矩阵
处理函数 数值文件(一般分隔):dlmread, dlmwrite ,load ,save 文本文件(逗号分隔) :textread, csvread, csvwrite 二进制文件:fopen, fread, fwrite, fclose 格式化的文本输入/输出:fscanf, fprintf 图像数据的读写:imread, imwrite,imshow
七、图形的复制与保存
• 图形窗口->edit->copy figure-> word文档->粘贴
努力不一定成功 放弃一定是失败
2000年全国数模竞赛A题:DNA序列分类 • 题目: • 数据导入:
fid=fopen(‘DNAdata.txt'); D = textscan(fid,'%s'); fclose(fid);
fid=fopen('DNAdata.txt'); D = textscan(fid,'%s'); fclose(fid); N=numel(C{1}); P=zeros(N,4); for i=1:N P(i,1)=mean(D{1}{i}=='a'); P(i,2)=mean(D{1}{i}=='c'); P(i,3)=mean(D{1}{i}=='t'); P(i,4)=mean(D{1}{i}=='g'); end
• 特征提取:
统计每条DNA中a、c、t、g 四个字符出现的频率。 D{1}{i}对应第i条DNA,N=numel(D{1})表示DNA总数 使用sum(D{1}{i} ==„g‟)可以计算出第i条DNA中有多少个字符 ‘g‟
四、图像数据的读写
• • • • 读图像:I=imread(filename); 显示图像:imshow(I), imshow(I,[]) , image(X) 写图像:imwrite(A,filename,fmt) 批量读取图像文件
path=uigetdir(cd);%获取文件夹路径 if path==0; return; end%没有打开文件夹,退出 files=[dir([path „\*.bmp‟]) ;dir([path „\*.jpg‟])];%获取文件夹下指 定类型文件,这里假设为bmp和jpg格式文件 Num=length(files);%文件总数 for ii=1:Num pic=imread([path ‘\’ files(ii).name]);%读取第i副图像 。。。。。。 end 例:2001年A题 :血管的三维重建;
其中names、 types 、 answer 均为cell数据类型。如 names{1} 对应‘Sally‟ answer{2}对应‘No‟。 x, y 均为double型 数组
• • • •
2009年全国数模赛B题数据的 导入
题目: 第一步:现将数据复制到记事本中: 第二步:编写程序,读取数据 第三部:数据处理与分析
五、数据导出
• save filename varlist 文件格式为mat,只能用load filename 导入 • dlmwrite(„filename‟,m):writes matrix m into filename using the “,” as the delimiter. 可用 dlmread(„filename‟) 或csvread(„filename‟) 读取 • csvwrite(filename,m) writes matrix m into filename as comma separated values. 结果与dlmwrite相同
二、使用textread读取格式化文 本数据 [A,B,C,...] = textread('filename','format')
按指定格式'format',,从文件„filename‟ 中读取数据到变量 A,B,C,…, 直到文件末尾。 [A,B,C,...] = textread('filename','format',N) 按格式„format‟,读取N次数据给变量A,B,C,… 例:设文件mydata.dat 内容为 Sally Level1 12.34 45 Yes Tom Level2 54.47 68 No 则[names, types, x, y, answer] = textread(„mydata.dat‟, „%s %s %f %d %s‟, 1) 返回: names = 'Sally' types = 'Level1' x = 12.34000000000000 y = 45 answer = 'Yes'
• 学好计算机的唯一途径是
• 你的编程能力与你在计算机上练习编程 所投入的时间成
matlab建模数据的导入与导出
• 普通表格数据的读写(使用dlmread) • 使用textread读取格式化文本数据 • 使用textscan读取格式化文本数据
• 图像数据的读写
• 数据导出 • 图形的复制与保存
matlab数据文件的读写
M = dlmread('filename') M = dlmread('filename', delimiter) M = dlmread('filename', delimiter, R, C) M = dlmread('filename', delimiter, range) 描述 M = dlmread('filename') 从由filename指定的具有分割标志的ASCII文件中读取数 值数据。 M = dlmread('filename', delimiter) 这里指定了分隔符。使用\t代表制表符tab分隔。 注意:当从格式文件推断分隔符时,连续的空格符作为一个分隔符对待。但是 不同的是, 如果通过分隔符输入参数指定了分隔符,那么重复的分隔字符 将分别作为单独的分隔符对待。 M = dlmread('filename', delimiter, R, C) R和C指定了数据在文件中的左上角位置。 R和C的值从0开始。R = 0, C = 0指定了了文件中的第一个值,位于文件的左 上角。 M = dlmread('filename', delimiter, range) 读取由range定义的区域块的数值,range = [R1 C1 R2 C2] 。也可以使用电子表格符号来指定,range = 'A1..B7'.。