




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MATLAB二进制数据文件的读写(2011-06-04 19:44:27) 转载标签: easleyhuxmatlab二进制读写杂谈分类: MATLAB 所谓二进制格式读写,个人认为其核心是“按指定数据类型大小读写内存”,所以其特殊之处应该在于读写时要指定数据类型。实例:clc; clear all;% 两个实数data = 1.234 5.678;% 先写文件fid = fopen(ceshi.bin, w);% 设置好格式,并且写入fwrite(fid, data, float32);fclose(fid);% 再读文件fid = fopen(ceshi.bin, rb);% 设置好格式,并且读出来data1 = double(fread(fid, 5, *float32);fclose(fid);disp(data)disp(data1)总结:二进制格式读写文件,应该特别注意其数据类型、指定个数。matlab要读入dat文件有字符标题,和很多数据,应该怎么读取? 2011-3-25 20:29 提问者: 526beyond | 浏览次数:1871次我来帮他解答 输入内容已经达到长度限制还能输入 9999 字插入图片删除图片插入地图删除地图插入视频视频地图参考资料:匿名回答提交回答取消 2011-3-26 08:05 满意回答 使用textread函数可以跳过文件头textread(name.dat,%f %f %f,headerlines,1)这样可以跳过1行 多行的话可以把headerlines修改下,%f %f %f,表示数据有三列都是浮点类型,根据实际写追问Number of outputs must match the number of unskipped input fields.出现了这个,是怎么回事?回答输入输出列数要匹配你看看textread的例子程序就知道了追问Number of outputs must match the number of unskipped input fields.Error in = textread at 176varargout1:nlhs=dataread(file,varargin:);完整的是这样的,麻烦你呢!回答例子3:myfile.txt 中的内容如下:% this a comment1, 2, 3, 45, 6, 7, 89, 10, 11, 12相应的语句为:filename = .myfile.txt;data1,data2,data3,data4=textread(filename,%n%n%n%n,delimiter, ,headerlines, 1);这里告诉textread跳过一开始的1行,1可以替换为任意你要跳过的行数。例子4:myfile.txt 中的内容如下:Sally Level1 12.34 45 Yes相应语句为:filename = .myfile.txt;names, types, x, y, answer = textread(filename , %s %s %f %d %s, 1) 4.1如果要忽略12.34这个浮点数。names, types, y, answer = textread(filename , %s %s %*f %d %s, 1)参考资料:/syysnhappy/archive/2010/10/08/5928359.aspx赞同1| 评论 向TA求助 回答者: 大海jianfei 来自团队 其他编程语言 | 五级采纳率:40% 擅长领域: C#/.NET 其他编程语言 校园生活 数学 数据库 参加的活动: 暂时没有参加的活动 fopen(filename, w+b)例如 FILE * fp=fopen(test.dat, wb+);-详细说明fopen()函数的用法fopen函数用于打开文件, 其调用格式为:FILE *fopen(char *filename, *type);fopen()函数中第一个形式参数表示文件名, 可以包含路径和文件名两部分。如:B:TEST.DATC:TCTEST.DAT注意:如果将路径写成C:TCTEST.DAT是不正确的, 这一点要特别注意。fopen 函数用来打开一个文件,其调用的一般形式为: 文件指针名=fopen(文件名,使用文件方式) 其中,“文件指针名”必须是被说明为FILE 类型的指针变量,“文件名”是被打开文件的文件名。 “使用文件方式”是指文件的类型和操作要求。“文件名”是字符串常量或字符串数组。例如: FILE *fp;fp=(file a,r);其意义是在当前目录下打开文件file a,只允许进行“读”操作,并使fp指向该文件。又如:FILE *fphzkfphzk=(c:hzk16,rb)其意义是打开C驱动器磁盘的根目录下的文件hzk16,这是一个二进制文件,只允许按二进制方式进行读操作。两个反斜线“ ”中的第一个表示转义字符,第二个表示根目录。使用文件的方式共有12种,下面给出了它们的符号和意义。第二个形式参数表示打开文件的类型。关于文件类型的规定参见下表。 表 文件操作类型 字符 含义 r 打开文字文件只读 w 创建文字文件只写 a 增补, 如果文件不存在则创建一个 r+ 打开一个文字文件读/写 w+ 创建一个文字文件读/写 a+ 打开或创建一个文件增补 b 二进制文件(可以和上面每一项合用) t 文本文件(默认项)赞同11| 评论 向TA求助 回答者: Hexpert | 七级 Matlab中数据文件的读写操作说明2(打开关闭文件及文件读写)(2011-08-25 23:03:47) 标签: matlab数据文件文件读写数据导入导出分类: 编程设计 1、打开文件在Matlab中进行文件的数据读写之前必须先打开文件,打开文件用fopen命令,其调用的格式为fid=fopen(文件名,打开方式) %文件名为字符串,可包括文件所在路径,默认为当前工作路径,fid为所打开文件句柄,后面对文件读写及关闭均需要此文件句柄。若打开文件成功,则返回的fid值大于0,否则返回负值。打开方式可为:1)r :以只读方式打开文件(默认的方式),所打开的文件必须已存在。2)r+:以读写方式打开文件,打开后先读后写。所打开的文件必须已存在。3)w :以写入方式打开文件。所打开的文件已存在则更新;不存在则创建。4)w+:以读写方式打开文件。所打开的文件已存在则更新;不存在则创建。5)a :以追加方式打开文件,打开文件后指针位于文件末尾。文件不存在则创建。6)a+:以追加方式打开文件,打开文件后,先读入数据再添加数据。文件不存在则创建。另外,在这些字符串后添加一个“t”,如rt或wt+,则将该文件以文本方式打开;如果添加的是“b”,则以二进制格式打开,这也是fopen函数默认的打开方式。2、关闭文件在对文件进行读写完成后,需要关闭已经打开的文件以保存数据。关闭文件用fclose函数,其调用格式为:fstatefclose(fid) %关闭fid所表示的文件。fstate表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回-1。如果要关闭所有已打开的文件用fclose(all)。3、二进制文件的读写1)写二进制文件fwrite函数按照指定的数据精度将矩阵中的元素写入到文件中。其调用格式为:COUNTfwrite(fid,A,precision)说明:其中COUNT返回所写的数据元素个数(可缺省),fid为文件句柄,A用来存放写入文件的数据,precision代表数据精度,常用的数据精度有:char、uchar、int、long、float、double等。缺省数据精度为uchar,即无符号字符格式。a=1 2 3 4 5 6 7 8 9;fid=fopen(d:test.bin,wb); %以二进制数据写入方式打开文件 fid = 3 %其值大于0,表示打开成功fwrite(fid,a,double) %得到 ans = 9 表示写入了9个数据fclose(fid) %得到ans = 0 表示关闭成功2)读二进制文件fread函数可以读取二进制文件的数据,并将数据存入矩阵。其调用格式为:A,COUNT=fread(fid,size,precision)说明:其中A是用于存放读取数据的矩阵、COUNT是返回所读取的数据元素个数、fid为文件句柄、size为可选项,若不选用则读取整个文件内容;若选用则它的值可以是下列值:N(读取N个元素到一个列向量)、inf(读取整个文件)、M,N(读数据到MN的矩阵中,数据按列存放)。 precision用于控制所写数据的精度,其形式与fwrite函数相同。4、文本文件的读写操作1)读文本文件fscanf函数可以读取文本文件的内容,并按指定格式存入矩阵。其调用格式为:A,COUNT=fscanf(fid,format,size)说明:其中A用来存放读取的数据,COUNT返回所读取的数据元素个数,fid为文件句柄,format用来控制读取的数据格式,由%加上格式符组成,常见的格式符有:d(整型)、f(浮点型)、s(字符串型)、c(字符型)等,在%与格式符之间还可以插入附加格式说明符,如数据宽度说明等。size为可选项,决定矩阵A中数据的排列形式,它可以取下列值:N(读取N个元素到一个列向量)、inf(读取整个文件)、M,N(读数据到MN的矩阵中,数据按列存放)。2)写文本文件fprintf函数可以将数据按指定格式写入到文本文件中。其调用格式为:fprintf(fid,format,A)说明:fid为文件句柄,指定要写入数据的文件,format是用来控制所写数据格式的格式符,与fscanf函数相同,A是用来存放数据的矩阵。上面语句中,参数format由%开头,共可由4个部分组成,分别如下: 标记(flag),为可选部分。 宽度和精度指示,为可选部分。 类型标志符,为可选部分。 转换字符,为必需部分。A. 标记标记用于控制输出的对齐方式,可以选择的内容如下所示。标记的可选内容函数 功能 示例负号(-) 在参数左侧进行判别 %-5.2d加号(+) 在数字前添加符号 %+5.2d空格( ) 在数字前插入空格 % 5.2d0 在数字前插入0 % 05.2dB. 宽度和精度指示用户可以通过数字指定输出数字的宽度及精度,格式如下:ans = 0打开fout.txt文件,其内容为:1.20 -43.300000001.200000 -43.3000001.20 -43.30000000从上述结果可以看出宽度和精度控制的效果。C. 转换字符转换字符用于指定输出的符号,可以选择的内容如下表所示。格式化输出的标志符及意义标志符 意义%c 输出单个字符%d 输出有符号十进制数%e 采用指数格式输出,采用小写字母 e,如:3.1415e+00%E 采用指数格式输出,采用大写字母 E,如:3.1415E+00%f 以浮点数的格式输出%g %e及%f的更紧凑的格式,不显示数字中无效的 0%G 与%g相同,但是使用大写字母E%i 有符号十进制数%o 无符号八进制数%s 输出字符串%u 无符号十进制数%x 十六进制数(使用小写字母af)%X 十六进制数(使用大写字母AF)其中 %o、%u、%x、%X支持使用子类型,具体情况这里不再赘述。格式化输出标志符的效果见下面的例子。例:fprintf 格式化输出示例。x = 0:.1:1;y = x; exp(x);fid = fopen(fout.txt, wt);fclose(fid)ans = 0显示该文件:0.00 1.000000000.10 1.105170920.20 1.221402760.30 1.349858810.40 1.491824700.50 1.648721270.60 1.822118800.70 2.013752710.80 2.225540930.90 2.459603111.00 2.71828183例: 利用 fprintf 函数在显示器上输出字符串fprintf(1,Its Friday.n)Its Friday.在该例中,利用1表示显示器,并且用两个单引号显示单引号,使用n进行换行。在格式化输出中,这类符号称为转义符。MATLAB中的常用转义符如下表所示。MATLAB中的常用转义符转义符 功能b 退格f 表格填充n 换行符r 回车t tab 反斜线 或 单引号%百分号关于format格式的例子(发表博文时有些字符会被过滤掉,这里用了图片):例:创建一个字符矩阵并存入磁盘,再读出赋值给另一个矩阵。a=string;fid=fopen(char1.txt,w);fprintf(fid,%s,a);fclose(fid);fid1=fopen(char1.txt,rt);b=fscanf(fid1,%s) %得到b = string,是从fid1的文件读取的另例:fid=fopen(fx.txt,r); %得到文件号f,count=fscanf(fid,%f %f,12,90); %把文件号1的数据读到f中。其中f是12 90的矩阵,%这里%f %f表示读取数据的形势,他是按原始数据型读取fclose(fid); %关闭文件注:本文根据原博文/s/blog_4d1865f00100ap6j.html 和 /s/blog_6e44841b0100mmcb.html 进行修改。几个很简单的matlab题 2007-5-9 15:08 提问者: zjncy | 浏览次数:1647次只需要m文件就可以了,但是m文件要能通过得出正确结果(顺便说一下是在什么哪个matlab版本环境下的,尽量不要使用扩展工具箱)1. 猜数游戏。 首先由计算机产生1,100之间的随机整数,然后由用户猜测所产生的随机数。根据用户猜测的情况给出不同提示,如猜测的数大于产生的数,则显示“High”,小于则显示“Low”,等于则显示“You won”,同时退出游戏。用户最多可以猜7次。2. 用筛选法求某自然数范围内的全部素数。 素数是大于1,且除了1和它本身以外,不能被其他任何整数所整除的整数。用筛选法求素数的基本思想是:要找出2m之间的全部素数,首先在2m中划去2的倍数(不包括2),然后划去3的倍数(不包括3),由于4已被划去,再找5的倍数 (不包括5),直到再划去不超过的数的倍数,剩下的数都是素数。3. Fibonacci数列定义如下:f1=1f2=1fn=fn-1+fn-2 (n2)求Fibonacci数列的第20项。4. 输入三角形的三条边,求面积。5建立数据文件test.dat,要求该文件可以读、写。文件内容如下:NAME SCORELiuqi 84.0Zhangbin 87.5Liping 90.0Wangwei 78.0Wujian 92.5 6. 已知某班的5名学生的三门课成绩列表如下: 学生序号 1 2 3 4 5 高等数学 78 89 64 73 68 外语 83 77 80 78 70 MATLAB语言 82 91 78 82 68 试写出有关命令,先分别找出三门课的最高分及其学生序号;然后找出三门课总分的最高分及其学生序号。针对上小题的成绩表,求出其三门课总分存入数组ZF,再利用SORT命令对之按降序排序,同时把相应的学生序号存入数组XH。7. 试编一个m程序,将一维数组x中的N个数按颠倒的次序重新存储。如N=5,原来x为:x= 1 3 5 7 9 而经过颠倒处理后x中数据的次序应该为:x= 9 7 5 3 1 8. 用随机顶点坐标画出5个粉色的三角形,并用黄色的表示顶点9. 用fzero 求取下列方程最接近的5个根 a)弹簧的振动方程 tan(x)=x b) 平板的对流换热方程 p=0.1 2* cot(x)=x/p-p/x10 椭圆和抛物线相交求交点 g(x,y)=x2/4+y2-1 f(x,y)=y-4x2+3我来帮他解答 输入内容已经达到长度限制还能输入 9999 字插入图片删除图片插入地图删除地图插入视频视频地图参考资料:匿名回答提交回答取消 2007-5-10 19:34 满意回答 太多了,不全会,完成部分。matlab6.5版%【1】x=round(100-rand*(100-1)for k=1:7 y=input(Input number:) if yx disp(High) elseif yx disp(Low) else y=x disp(You won) return endend运行结果:x = 22Input number:20y = 20LowInput number:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO/IEC 21122-4:2025 EN Information technology - JPEG XS low-latency lightweight image coding system - Part 4: Conformance testing
- 【正版授权】 ISO 80000-8:2020/Amd 1:2025 EN Quantities and units - Part 8: Acoustics - Amendment 1
- 【正版授权】 ISO 502:2025 EN Hard coal - Determination of caking power - Gray-King coke test
- 【正版授权】 ISO 16625:2025 EN Cranes and hoists - Selection of wire ropes,drums and sheaves
- 【正版授权】 IEC 63380-2:2025 FR Standard interface for connecting charging stations to local energy management systems - Part 2: Specific data model mapping
- 【正版授权】 IEC 60598-2-1:1979 FR-D Luminaires. Part 2: Particular requirements. Section One: Fixed general purpose luminaires
- 【正版授权】 IEC 60269-2:1986 FR-D Low-voltage fuses. Part 2: Supplementary requirements for fuses for use by authorized persons (fuses mainly for industrial application)
- 校园防盗防火安全知识培训课件
- 公孙策面试题及答案
- 煤分析考试题及答案
- 手术室安全细节管理
- 继发性颅脑损伤的护理
- 《保角变换法在求解电势中的应用研究》7500字(论文)
- TCHIA 47-2024 智慧重症病房建设规范
- 多模态技术在智能养鸡工厂中的研究现状与展望
- 征信知识专项培训课件
- 《基于深度强化学习在游戏上的应用》
- 中建给排水工程施工方案
- 电力建设工程施工合同(合同版本)
- 糖尿病饮食的健康宣教
- 《公务员录用体检操作手册(试行)》
评论
0/150
提交评论