fscanf不读取_思考了一天,终于把matlab的fscanf中的sizeA搞清楚了

62d084c5456fe36823a84b91d2fbdbb9.png

数值如12345等可以作为字符,所以以字符格式读取文件时,这些数字照样可以被读取
A = fscanf(fileID,formatSpec)
A = fscanf(fileID,formatSpec,sizeA)
以上是fscanf的语法;
sizeA起到的作用是限制,限制读取读取文件中数据的数量;
举例来说:
John 1995 12 5 12.3 3.24
Tom 1995 12 7 2.3 2.0
Jean 1996 3 2 10.2 0
假如说文件中有这么一组数;
说明:每个空白间隔为一个数据
第一个数据为‘John’是一个字符串,读取的格式为fprintf(fid,'%s or %c',sizeA)
注意%s是读取字符串,不包括空白(即读取完后,数据之间无空白间隔);John199512512.3
而%c是逐个字符读取,包括空白(即读取完后,数据之间有空白间隔);John 1995 12 5
说完读取的部分,再来说说sizeA是如何控制fscanf函数的。sizeA=N的情形
(1)对于字符读取,采用%s
%s是一个字符串一个字符串进行读取的,fprintf(fid,'%s',sizeA)
sizeA可以使单个整数N,也可以是[m n]
我们先运行N,取值为1 3 5
clear;
fid = fopen('fscanfsample.txt','r'); i = 1;
name = fscanf(fid,'%s',1)
name =
'John'
clear;
fid = fopen('fscanfsample.txt','r'); i = 1;
name = fscanf(fid,'%s',2)
name =
'John1995'
clear;
fid = fopen('fscanfsample.txt','r'); i = 1;
name = fscanf(fid,'%s',5)
name =
'John199512512.3'
可以看到,%s每次读取一个字符串,前面提到,数字都可以当成字符串,但字符串不能当为数字
所以sizeA=1是读取一个字符串,sizeA=2时,读取两个字符串,5时读取5个字符串,并且没有空白间隔
所以sizeA其实就是控制fscanf读取数据的数目,
fscanf读取数据的时候是横向读取,而SizeA是控制读取的数目
(2)那么对于%c同样如此,只不过%c是一个一个字符去读,因此sizeA要扩大,比如读取第一个字符串John
对于%s,sizeA=1即可,但对于%c,则sizeA需要等于4才可读出。
(3)对于数值的读取同样代表读取的数据个数,但需要注意的是,%d指的是整数,%f指的是浮点数;我们看该文件第一行1995 12 5都是整数,如果写fscanf(fid,'%d',3)那么肯定能把这三个整数读到,并且按照列进行排列,如果写fscanf(fid,'%d',4),由于12.3由整数和小数两部分构成,因此小数点以前的12可以被读出来,但是小数点和小数点后的3无法读出来,因为不是整数。如果写fscanf(fid,'%d',5),照样只读到12.3的12就停止,因为不满足要求之后,fscanf会停止运行。返回之前读取的数据。
(4)fscanf 函数在整个文件中重新应用该格式,并将文件指针定位在文件结尾标记处。如果 fscanf 无法将 formatSpec 与数据相匹配,将只读取匹配的部分并停止处理
以上讲的都是sizeA=N的情形,接下来将sizeA=[m n]的情形
(1)对于字符串
字符串数据类型为char,char没有矩阵一说,字符串string的引用一般直接写str(i)即可,如str=’I love China‘, str(1)==I,str(5)==v,不能写为str(3,3),会报错:
str(3,3)
索引超出数组边界(不能超出 1)。
但是可以写str(1,3),相当于str(3);等于‘l'
因此,对于字符串,一般不需要也不用[m n].
(2) 对于数据类型
以此文件为例,由于第一个“john’为字符串,因此,直接运行fscanf(fid,'%d或%f',[m n])无法读取数据,因为数据类型不满足,会自动停止运行。
所以我们这里把Name列删除,删除之后为:
1995 12 5 12.3 3.24
1995 12 7 2.3 2.0
1996 3 2 10.2 0
这里我们可以看到,如果要想把所有数据读出来,sizeA用N表示应该为12。
另外该文件数据有整数和小数,如果用%d读的话,按行进行,遇到第一个小数点12.3,只会读取到12,点后边的就无法读取,因此要想把所有数据读出,需要用%f来进行。
我们执行fscanf(fid,'%f',[2 3]),得到结果如下:
A=fscanf(fid,'%f',[2 3])
A =
1.0e+03 *
1.9950 0.0050 0.0032
0.0120 0.0123 1.9950
发现fscanf从1995开始,共读取6个数据,并按照2行3列进行排列,到这里我们就会发现,对于数据类型,sizeA=[m n]
会使fscanf读取的数据个数为N=m*n个数据,并将他们按照m行n列进行排序,排序的时候,先进行列排序,再进行行排序,因此,行数m肯定是有限个数,n却可以使无穷大的,即inf。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528730.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux开发板 pc 通讯_从51单片机到Linux 开发板运行hello world(教程4)

大家好,我是兔子。是一个嵌入式软硬件工程师。正在从单片机开发转岗Linux开发。这次教大家如何在Linux开发板上运行可执行文件。简单起见,不涉及到硬件。直接和教程2一样,能在PC虚拟机上运行hello world程序。当然开发板上也可以。1.Source I…

python decimal 转 float_python教程之二python数学运算

存储数据变量#两个变量交换值,通过第三个参数实现print(两个变量交换值,通过第三个参数实现); #第一种方法是通过第三个参数实现x5;#变量赋值y11; #变量赋值print(交换前,x,y);tempx;xy;ytemp;print(交换后,x,y);#两个变量交换值,更便捷的方法…

mysql 主从 sql线程no_Mysql 主从同步 slave_sql_running 为no

背景之前搭建了主从,但没有设置读写分离,从库也能写数据。于是想测试下在从库写数据会导致同步怎么样。 结果发现,slave_sql_running为no,slava_IO_running仍然为yes.原因由于从库写数据,导致主从数据不一致&#xff0…

header python 环境信息_【关于header信息的构造】Python模拟登录出现乱码

使用Python模拟登录Z-Blog系统的后台时,如果构造的header信息如下,那么得到的结果将会乱码,如下图所示对应的错误的header信息如下:url "http://192.168.1.11/cmd.asp?actverify"request urllib2.Request(url)reques…

禁用win10触摸屏手势_Win10平板边缘滑动手势大全及开启/关闭方法

Win10对于平板/触屏设备进行了特别优化,这体现在显示和操作等方面。对于操作方面,Windows10平板除了支持传统操作方法外,还有专门的边缘滑动手势。这些操作有别于之前的Win8/Win8.1,Win10边缘滑动操作共有以下四种形式&#xff1a…

java的容器类有哪些实现方式_Java基础--容器类

面试官:Java的容器类你有什么了解吗?-:额,没有用过....面试官:你肯定用过,但你没有注意过....-:应该是吧....你知道什么是容器类吗?Java容器可以说是增强程序员编程能力的基本工具&a…

java集合系列_Java集合系列01-Java集合概述

1.Java集合基本概念在编程中,常常需要集中存放多个数据。从传统意义上讲,数组是我们的一个很好的选择,前提是我们事先已经明确知道我们将要保存的对象的数量,因为数组长度在初始化时指定,意味着只能保存定长的数据。一…

java黄金连分数_蓝桥杯 | Java B组省赛真题练习——黄金连分数-Go语言中文社区...

标题: 黄金连分数黄金分割数0.61803... 是个无理数,这个常数十分重要,在许多工程问题中会出现。有时需要把这个数字求得很精确。 对于某些 精密工程,常数的精度很重要。也许你听说过哈勃太空望远镜,它首次升空后就发现了一处人工加…

python 数组维度_python – 非常基本的Numpy数组维度可视化

NumPy中ndarray的解剖结构如下所示:(来源:Physics Dept, Cornell Uni)一旦离开2D空间并进入3D或更高维空间,行和列的概念就不再有意义了.但是你仍然可以直观地理解3D阵列.例如,考虑你的例子:In [41]: bOut[41]:array([[[ 1, 2, 3],[ 4, 5, 6]…

Java捕获异常密码_Java捕获异常的问题

---恢复内容开始---在Java编译过程中,有时候会出现输入未按照规定输入的情况,此时需要警告用户输入错误,这就会是程序运行过程中出现异常。异常就是可预测但是又没办法消除的一种错误。所以在编写过程中,为了在程序当中不发生这样…

java作业四_Java第四次作业

1.(二次方程式)为二次方程式ax2bxc0设计一个名为QuadraticEquation的类。这类包括:(1)代表三个系数的私有数据域a、b、c(2)一个参数为a、b和c的构造方法(3)a、b、c的三个get方法(4)一个名为getDiscriminant()的方法返回判别式,b2-4ac(5)一个名为getRoot1…

java collectiongroup 类_Java中的collection集合类型总结

java集合是java提供的工具包,包含了常用的数据结构:集合、链表、队列、栈、数组、映射等。java集合工具包位置是java.util.*java集合主要可以划分为4个部分:list列表、set集合、map映射、工具类(iterator迭代器、enumeration枚举类、arrays和…

php 鼠标点击图片放大,css3如何实现鼠标放上图片放大?(附代码)

在css3的学习中,我们会经常做一些小的动画效果,这感觉非常有趣,所以今天的这篇文章将给大家来介绍关于css3实现图片放大的一个效果,有兴趣的小伙伴可以看一下。我们都知道css3中增加了一个transform属性应用于元素的2D或3D转换&am…

脉位调制解调 matlab,通信原理与matlab仿真v2 第五章 DBPSK调制解调器(1)

在毕业设计的相关课程中,已经提及了这个DPSK调制方式。不过如果把它放在理论教学课程中来讲,就需要补充一些基本知识。当然还会给同学们看一下实际在卫星通信中使用的DBPSK程序。之前讲到了BPSK,回顾一下发送滤波器的知识吧。由于信号要在信道…

matlab地址数据类型uns,使用matlab生成sine波mif文件

使用matlab生成sine波mif文件作者:lee神在使用altera 的FPGA中的rom過程中常常會使用到.mif文件或.hex文件。對於初學者,無論mif還是hex都是很令人疑惑的東西,這里就對mif文件的格式及其創建做一點簡單的說明。Mif是memory initialization fi…

OpenAI科学家Hyung Won Chung演讲精华版

文章目录 第一个观点:涌现第二个观点:如何扩大规模1、标记化2、嵌入3、计算4、评估(损失函数)5、反向传播 最近从Google跳槽到OpenAI的AI科学家 Hyung Won Chung 比较拗口,我就简称尚哥了 他最近做了一个技术演讲 …

php如何实现购物时数量增减,1、vuex状态管理--购物车数量增减

GIF.gif1、购物车数量增减-import { mapState,mapMutations} from vuex //引入mapState、mapMutations映射函数export default{computed:{...mapState({changableNum:state > state.headerStatus.changableNum, //用模块headerStatus里的状态 changableNumdisabled:state &g…

oracle中存储过程和函数有什么区别,Oracle中存储过程和函数的区别

Oracle中存储过程和函数的区别存储过程和函数: www.2cto.com例子:[sql]//创建过程create or replace procedure add_emailinfo(namee email_info.fullname%type ,address email_info.email_address%type )isbegininsert into email_info(ful…

oracle 查询结果升序,Oracle学习日志-8(查询结果排序)

要用到的表如下书上写到,上面的查询结果排序是随机的,再执行几次结果可能不同,但是我执行多次后,查询结果的排序都是如此,是因为oracle的默认处理方式是按照物理储存顺序查询的,而我在插入记录的时候都是按…

linux下如何搜索某个文件,技术|如何在 Linux 中查找一个文件

对于新手而言,在 Linux 中使用命令行可能会非常不方便。没有图形界面,很难在不同文件夹间浏览,找到需要的文件。本篇教程中,我会展示如何在 Linux 中查找特定的文件。第一步要做的是find 命令,另外一种是使用 locate 命…