随笔 - 1762  文章 - 0  评论 - 109  阅读 - 431万

fprintf()函数和fscanf()函数

fprintf('%6.2f\n',4.8882828388383)

运行结果:4.89

 

fprintf函数可以将数据按指定格式写入到文本文件中。其调用格式为:

数据的格式化输出:fprintf(fid,format,variables)

按指定的格式将变量的值输出到屏幕或指定文件

fid为文件句柄,若缺省,则输出到屏幕

 

format用来指定数据输出时采用的格式

%d 整数

%e实数:科学计算法形式

%f实数:小数形式

%g由系统自动选取上述两种格式之一

%s输出字符串

 

fprintf(fid,format,A)

 

说明:fid为文件句柄,指定要写入数据的文件名,format是用来控制所写数据格式的格式符,与fscanf函数相同,A是用来存放数据的矩阵。

 

 

例1: 创建一个字符矩阵并存入磁盘,再读出赋值给另一个矩阵。
>> a='string';

 

>> fid=fopen('d:\char1.txt','w');

 

>> fprintf(fid,'%s',a);

 

>> fclose(fid);
================================================================================

 (54条消息) Matlab使用fscanf函数读取文本数据_matlab fscanf读取某一行_植良的博客-CSDN博客

这里假设文本文件中有5*4的一组数据,使用Matlab进行读取并保存在一个矩阵中。

原数据形式如下,文件名为data123,中间使用空格隔开:

1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
17 18 19 20

相关程序如下:

复制代码
clear
%%确定所要读取的文件名以及方式
fileID = fopen('data123.txt','r');
%%确定所读取数据的格式(这里是整数,所以用%d,也可以用%f,表示浮点型数据)
formatSpec = '%d %d %d %d';
%%确定数据矩阵的大小。需要注意的是,读取时是行优先,在保存时是列优先,所以在最后需要进行转置。
%%下面的4主要是指一行有四个数据。
%%这里的Inf也可以写具体的值,不过只要确定矩阵的一维,另一维就随之而定了。这里选择了Inf。
size = [4 Inf];
%%读取数据并保存在A中。
A = fscanf(fileID,formatSpec,size);
%%文件读取关闭
fclose(fileID);
A = A';
复制代码

 

程序运行的结果如下:

 

 

注意:

1.formatSpec = '%d %d %d %d';该语句%d之间可以用空格或者省略,但是不能使用逗号;如果想正确使用逗号,原数据中间也必须是逗号隔开,满足对应关系。

另外,对于文本数据的操作,可以使用Notepad++,相对比较方便高效。

 

 

 

posted on   一杯明月  阅读(4708)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示