MATLAB FormatSpec(格式化操作符)使用详解 fprintf函数 在MATLAB中,我们可以利用fprintf函数进行输出。 其函数定义有如下三种:1️⃣fprintf(fileID,formatSpec,A1,…,An)2️⃣fprintf(formatSpec,A1,…,An)3️⃣nbytes = fprintf( ___ ) 我们看最复杂的第一种,其三个参数分别为:参数 fileID:输出位置,其取值有以下几种情况:数字1:输出到屏幕(默认值) 输出结果:
数字2:输出标准错误这个错误不是指代码错误,是指输出错误提示,就是下面那种红色的文字。 输出结果:
可能是用了中文的缘故,输出的最后一个字不是红色。 将输入换成英文:
发现输出全部是红色的。利用fopen函数生成的文件标识符 生成文件:
参数 formatSpec格式化操作符,这个会在下文详细介绍。参数 A1,…,An待输出数据。 formatSpec(格式化操作符) FormatSpec的格式长这个样子: % 标识符 标志 字段宽度 精度 子类型 转换字符 可以看出其包含七个部分,其中%和转换字符是不能忽略的。下面我们将分别对这几个部分进行介绍。 一、 % 格式化操作符必须以%开头,别问为什么,问就是规定[手动狗头]。 二、标识符 标识符的使用语法是n$,用于调整参数的相对位置。(其中n为整数)举个栗子: 的输出结果为:“圣火昭昭 圣火耀耀 凡我弟子 喵喵喵喵”。其中的s指字符串类型;其利用前面的标识符改变了输出词语的顺序。 当然,标识符的数量不需要和后面词语数量一样多,下面的这种写法也是可以的:其输出结果为:“圣火昭昭 圣火耀耀 凡我弟子 喵喵喵喵 喵喵喵喵 喵喵喵喵 喵喵喵喵” 三、 标志标志规定了文本的对齐方式、填充内容或一些数值转换方式。首先给出官方文档的介绍:
下面是对上表的一些实践案例。“-”号从上表可以看出,左对齐用到了“-”号。 运行结果如下: 圣火昭昭,圣火耀耀,凡我弟子,喵喵喵喵圣火昭昭,圣火耀耀,凡我弟子,喵喵喵圣火昭昭,圣火耀耀,凡我弟子,喵喵圣火昭昭,圣火耀耀,凡我弟子,喵 可以看出,每一行的最后一句是以左对齐方式排列的。 2. “+”号于左对齐类似,右对齐就是利用“+”号,注意需要给定数据的字段宽度。代码(字段宽度设为20)和运行结果如下:
由于中文字符的宽度比空格要大,所以出现了对不齐的现象。我们换成英文试试: 运行结果如下:
可以看出英文是可以对齐的。除此之外,符号为“+”还可以用于输出符号:举个 : 可以看出其输出了10和前面的正号。若不加标识符“+”,则不输出正号。负数无论有没有标识符“+”都会输出负号。 3. “ ”里面是空格,不是没有东西哈! 就是输出前多了个空格。 4. “0”这个符号的作用是利用0填满字段至字符宽度。代码和运行结果如下: 需要注意的是,上面代码中间的“010”应该看成两部分,前一部分是符号位为“0”,后面一的“10”为字符宽度。 5. “#”进行数值转换。 从第一、二句可以看出,“#”标识符显示出了16进制数前面的0X。从第最后四句可以看出,“#”标识符保留了浮点数的小数点。 四、 字段宽度字段宽度就是要输出的最低字符数。就是说如果你输入位数比这个字符宽度小,就要补到这么宽;如果你输入位数比这个字符宽度大,就直接接在后面就行,不用填充。如之前的这个: 可以看出,当输出符号长度大于等于字段宽度3的时候,是直接连在后面的,不用另外填充;而当输出符号长度小于字段宽度3的时候,需要进行填充,再将其连在后面。 还应该注意的是,我们可以将*指定为字段宽度。这个时候,字段宽度的取值需要作为一个新的输入参数。下面进行一个小实验: 可以看出这两种写法的结果是一样的。 当然,当我们对每一个输入参数都有特定的字段宽度要求时,我们可以对其字段宽度分别进行设定: 上面的\n作为换行符,不属于格式化操作符。对于上面的列表[8,123,4,234,12,56],应该将其分为奇数位和偶数位两部分。其中奇数位代表着字段宽度,偶数位代表输出字段。所以上式代表着:分别输出字段宽度为8的整数123、字段宽度为4的整数234,字段宽度为12的整数56。 除非标志(即前面第三部分)指定,否则默认用空格填充。 五、 精度同样先放官方文档:
可以看到,精度这个参数在小数点后面。(看到小数点,就知道它后面连着的是精度啦)精度分为两种,小数点后位数和有效数字,分别对应两类转义字符(如上表所示)。 同样的,精度操作符不仅是数字,也可以*号。 我们首先发现其转换字符是%f,根据上面官方文档的表看出其精度值得是小数点后位数。第三行的代码表示:分别以小数点后8、4、12位表示圆周率。 六、 子类型官方文档在此!
可以看出,只有浮点数才有子类型这个东西。而且子类型需要紧跟在转换字符前面。子类型分为两大类,即单精度转换和双精度转换。每一类中转换又分十六进制、十进制、八进制。具体规则如上表所示。 七、 转换字符转换字符规定了格式化的类型。转换字符在格式化操作符中是不能缺少的。下面是MATLAB官方文档中要将数值和字符数据格式化为文本的转换字符。
特殊字符表示:
上面就是fprintf函数的介绍,其中重点对其格式化操作符进行了介绍,现在我们就能用fprintf函数自由地格式化输出了!
参考文献: https://ww2.mathworks.cn/help/matlab/ref/fprintf.html
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/56489.html