(一)MATLAB中的输入与输出

news/2024/4/20 5:35:52/

先写一些,积累多点再来补充~

一   输入

1.input

input 的应用形式主要有以下两种,其中第一个输入的数字,第二个输入的是文本信息(一般为字符串)

x = input(prompt)str = input(prompt,'s')

式中,prompt 代表要展示的文本信息,例如 a=input('please input a number\n') ,会在命令行上显示 please input a number ,此时可以手动输入一个数字(若输入其他格式例如字符会报错)。这是程序不会继续运行,而是等待输入数字后回车方可继续运行,文本输入同理。详见MATLAB中的input函数。

2.其它输入

输入数据也可以是导入和读取文件数据,MATLAB支持的数据格式多种多样,常见的主要有txt格式、xml格式等,再次仅对少数函数进行介绍,若想了解更多可以参考MATLAB数据导入与分析中的关于文本、表格、图像等格式文件的导入函数,本文主要介绍函数调用形式的输入输出。

2.1  fscanf

首先,使用 fscanf 函数读取的文件格式为文本格式,应用到的三种形式如下:

 A = fscanf(fileID,formatSpec) 将打开的文本文件中的数据读取到列向量 A 中,并根据formatSpec 指定的格式解释文件中的值。fscanf 函数在整个文件中重新应用该格式,并将文件指针定位在文件结尾标记处。如果 fscanf 无法将 formatSpec 与数据相匹配,将只读取匹配的部分并停止处理。fileID(文件标识符)可以使用fileID = fopen('x.txt','a'); 的方式打开文件得到。formatSpec为数据段部分格式。

A = fscanf(fileID,formatSpec,sizeA) 将文件数据读取到维度为 sizeA 的数组 A 中,并将文件指针定位到最后读取的值之后。fscanf 按列顺序填充 AsizeA 必须为正整数或采用 [m n] 的形式,其中 m 和 n 为正整数(也可以是Inf  正无穷,表示读取对应的所有行/列/整块数据)。

[A,count] = fscanf(___) 还将返回 fscanf 读取到 A 中的字段数。对于数值数据,这是已读取的值数。您可以将此语法与前面语法中的任何输入参数结合使用。

然而,一般我是不用这个的。

2.2 load

load是MATLAB中最为常见的一种文件读取函数了,主要形式有以下五种:

load(filename)

load(filename,variables)

load(filename,'-ascii')

load(filename,'-mat')

load(filename,'-mat',variables)

可以是直接加载,形如 data=load('D:/test.txt'); 或者 data=load('D:/test.txt','x')读取 test.txt 中的x变量,其中x也可替换为多个变量组成的元胞数组,例如将x替换为var{:},其中var={'x','y','z'};除了 txt文本文件,还可以是MATLAB的数据类型mat格式文件(会直接输出到工作区中),ascii文件格式如第三个式子所示,会创建一个包含该文件数据的双精度数组。

通过load方式加载的数据尤为常见,在许多MATLAB的扩展函数中都可以见到,加载的格式也算是非常丰富的,文本文件,数据库文件或是表格文件都可以。

2.3 fopen

fopen 是打开文件,在下面fprintf函数中又对其各种格式的详细说明。通过fopen打开文件后,可以使用文本文件或字符串读取函数 textscan 来读取文件,调用格式如下:

fileID=fopen(filename);

C=textscan(fileID,formatSpec);

fclose(fileID);

打开文件后,textscan会尝试将文件中的数据与formatSpec中的转换设定符匹配。textscan函数在整个文件中按 formatSpec重复扫描数据,直至 formatSpec 找不到匹配的数据时才停止。

另外,也可以参考以下这种做法,将数据处理成元胞数组再转化为字符数组,运行结果如下

fileID = fopen('D:/test.txt','r');
rowdata = textscan(fileID, '%s', 'DElimiter', '\n');% 获得每行数据
fclose(fileID);
whos rowdata
rowdata{1}
%rowdata{2},会报错,rowdata为{1,1}元胞数组
a=rowdata{1,1}
whos a
b1=a{1,1}
whos b1

至于转换后的字符数组要怎么处理便是自己的事情了,这是相对于复杂输入类型的读取方式,更详细部分可以参考textscan。输入还是以 load 加载为主。


二   输出

常见的输出形式主要有三种:

1.直接输出到命令行

MATLAB允许在脚本(M文件)或者命令行上直接输入变量名即可输出,这种方法应用起来较为简单方便,适合测试时使用。但一般输出时时按照系统默认格式进行输出,若要调整需要在程序前通过 format 修改命令行输出格式,例如 format long 设置命令行输出格式为固定十进制长格式,同理可以设置为 short 短格式,更多的数值格式见下表所示(这些在MATLAB文档中都可以找到~format详解)

数值格式

这些样式可控制数值变量的输出显示格式。

Style

结果

示例

short (default)

固定十进制短格式,小数点后包含 4 位数。

3.1416

long

长固定小数格式,double 值的小数点后包含 15 位数,single 值的小数点后包含 7 位数。

3.141592653589793

shortE

短科学记数法,小数点后包含 4 位数。

3.1416e+00

longE

长科学记数法,double 值的小数点后包含 15 位数,single 值的小数点后包含 7 位数。

3.141592653589793e+00

shortG

短固定小数格式或科学记数法(取更紧凑的一个),总共 5 位。

3.1416

longG

长固定小数格式或科学记数法(取更紧凑的一个),对于 double 值,总共 15 位;对于 single 值,总共 7 位。

3.14159265358979

shortEng

短工程记数法,小数点后包含 4 位数,指数为 3 的倍数。

3.1416e+000

longEng

长工程记数法,包含 15 位有效位数,指数为 3 的倍数。

3.14159265358979e+000

+

正/负格式,对正、负和零元素分别显示 +- 和空白字符。

+

bank

货币格式,小数点后包含 2 位数。

3.14

hex

二进制双精度数字的十六进制表示形式。

400921fb54442d18

rat

小整数的比率。

355/113

除此,也可以设置矩阵输出时的行距格式:

Style

结果

示例

compact

隐藏过多的空白行以便在一个屏幕上显示更多输出。

theta = pi/2
theta =
  1.5708

loose

添加空白行以使输出更易于阅读。

theta = pi/2

theta =

  1.5708

2 fprintf函数输出

fprintf函数是MATLAB函数中较为常见的一种(详见fprintf函数),因为它可以设置输出格式,较为灵活全面。最为常见的一种形式为: fprintf('%s is a boy',boyname) ,其中 boyname 表示一个存储字符串的变量名,同理这种形式可以输出十进制数(%d)、八进制数(%o)、定点记数法的浮点数(%f)以及指数记数法的浮点数(%e),单个字符(%c)和字符串(%s)。

如是需要控制输出的长度,可以在百分号后加上数字,例如 %8s 输出长度为八(若实际字符串长度超过八会输出字符串原身,不会截断),在命令行上至少保持8个占位,不够用空格来补,而 %4.8f 则会输出4位整数加小数点加8位小数的数字格式,与字符串不同的时,整数不够用空格补,小数不够用 0 来补。

前面所提的案例输出格式遵循右对齐的格式,若想变成左对齐则在百分号后数字或格式前加一个负号即可,例如 %-8s 。除此,我们还可以通过一些特殊的控制字符来维持输出格式的美观,例如 \t (水平)制表符,\n 换行符,\v 垂直制表符。

除此,fprintf函数还可以将数据输出到文件中存储起来,在MATLAB脚本中操作,格式案例如下:

x = 0:.1:1;
A = [x; exp(x)];fileID = fopen('exp.txt','w');
fprintf(fileID,'%6s %12s\n','x','exp(x)');
fprintf(fileID,'%6.2f %12.8f\n',A);
fclose(fileID);

在输出前首先需要打开文件(fopen),输出结束后需要关闭文件(fclose),如上所示。其中,fopen函数里的是文件名以及标识符,标识符类别有以下8种,若是要创建新文件则是 w ,若是在原有文件里补充则是 a ,一般用到的就这两种。

'r'

打开要读取的文件。

'w'

打开或创建要写入的新文件。放弃现有内容(如果有)。

'a'

打开或创建要写入的新文件。追加数据到文件末尾。

'r+'

打开要读写的文件。

'w+'

打开或创建要读写的新文件。放弃现有内容(如果有)。

'a+'

打开或创建要读写的新文件。追加数据到文件末尾。

'A'

打开文件以追加(但不自动刷新)当前输出缓冲区。

'W'

打开文件以写入(但不自动刷新)当前输出缓冲区。

fclose 关闭文件,括号里面的fileID是文件标识符,即代表打开的文件,无特殊情况该语句也可以用 fclose('all') 关闭所有文件代替。而fprintf与前面输出到命令行的格式大致相似,不过在最前面加上了一个fileID~文件标识符而已。

3.disp

disp函数是直接输出,打印变量值或者打印字符串,形如 disp(x)和disp('x')表达的意思是不同的,前者是输出 x 的值,可以是字符串、整数、矩阵等等,而后者则是直接打印字符串 x ,打印完会直接换行,不像fprintf函数需要输入 \n 换行。同时,需要注意的是 disp 若是要在一行i打印字符串和变量值不能直接写成这种形式: disp('a is',a_value),这样会出现输入参数过多的错误(而在C#语言中使用$可以做到类似操作),但是可以写成类如以下形式来输出:

name = 'Alice';   
age = 12;
X = [name,' will be ',num2str(age),' this year.'];
disp(X)

这样会在一行里输出 :Alice will be 12 this year.

大致的输入输出操作就到这儿了,更多内容还需继续进修~一般来说这些输入输出就足够了


http://www.ppmy.cn/news/479337.html

相关文章

matlab 结果输出,matlab结果输出到文本的方法

matlab程序输出到文本,目前熟悉的有两种方法 1、输出类型为科学计数法:格式为 save fliename.txt variable -ASCII save EDNS1.txt EDNS -ASCII save LOLP1.txt LOLP -ASCII save Wind_bus_cut1.txt Wind_bus_cut -ASCII save Load_bus_cut1.txt…

matlab gui 输出字符串,请教Matlab的GUI中结果的输出

ApplendseriesK得到的结果有很多,应该怎样定义输出参数? function ApplendseriesK(C1,Pinf,Winf,delta) clear all close all %-----------------------冕玻璃系列-------------------------- glassK(1)=struct(name,K3,nd,1.50463,vd,64.72); glassK(2)=struct(name,K7,nd,1…

matlab 函数作为输入,MATLAB的输入与输出函数

标题 输入:input() 1. 输入单个数值 2. 输入字符串 3. 输入以空格隔开的一行数值 4. 输入以空格与换行符隔开的多行数值 输出 1. disp() (1)输出单个数值 (2)输出一维数组 (3)输出矩阵 (4)输出字符串 2. fprintf() (1)输出格式化的单个数值 (2)输出格式化的一维数组 (3)输出格…

matlab函数输出语句,matlab两种输出语句分别是什么

matlab两种输出语句分别是什么 发布时间:2021-02-26 14:21:27 来源:亿速云 阅读:79 作者:小新 这篇文章主要介绍了matlab两种输出语句分别是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望…

matlab屏幕输出方法总结

1.改变数据格式 当数据重复再命令行窗口时,整数以整形形式显示,其他值将以默认格式显示。MATLAB的默认格式是精确到小数点后4位。如果一个数太大或太小,那么将会以科学记数法的形式显示。比如: >> x100.11x 100.1100 &…

matlab输出excel字符,matlab中实现文字和数字和混输出excel | 学步园

做一个小程序时,需要数据和文字混合输出到,直接构建这样的矩阵在matlab中行不通 于是有了下列的代码: %输出excel表格 excel_outpathF:\Work\paper_work\parallel_simulation\code\excel\test.xlsx;%输出路径 %构建表头 rtnxlswrite(excel_ou…

用matlab怎么输出变量,matlab – 如何从变量手动输出发布内容

要使用工作区中的变量 当使用带有html编码字符串的disp()发布到html时,会将行添加到输出中(不使用代码输出的格式). 例如 str sprintf(some value: %f from the workspace,variable) disp([,str,]) 笔记: >它非常敏感,你可能需要在它们之间添加不可见的分节符 代…

matlab的输入输出常见语句

https://blog.csdn.net/winone361/article/details/45457485 输入语句输入数值 xinput(please input a number:) please input a number:22 x 22 输入字符串 xinput(please input a string:,s) please input a string:this is a string x this is a string 输出语句输出显示命…

matlab 输出一行字,MATLAB输出结果的格式设置

4.5 教程:MATLAB输出结果的格式设置 在本章的前面几节里,我们用fprintf( )函数把文本消息输出到屏幕上。在这一节,读者将要学习用fprintf( )函数把变量的值输出到屏幕上或一个结果文件里,还要学习如何对这些变量的值和相应的文字说明进行格式设置。 fid是文件标识符,当结果…

matlab中表格的输出,matlab中实现文字和数字和混输出excel

做一个小程序时,需要数据和文字混合输出到,直接构建这样的矩阵在matlab中行不通 于是有了下列的代码: %输出excel表格 excel_outpathF:\Work\paper_work\parallel_simulation\code\excel\test.xlsx;%输出路径 %构建表头 rtnxlswrite(excel_ou…

matlab中输出汉字的函数,matlab中的输出显示函数

matlab中的输出显示函数 在matlab中使用的显示函数有disp、sprintf、fprintf比较常用。下面来介绍一下他们的用法。 1、disp()函数: disp(x)主要是用来输出变量x的值,也可以输出字符串。示例: 输出字符串: 输出多个变量&#xff1…

【MATLAB】Matlab输入输出格式及矩阵运算

我们来看一个例子,计算面积 Area 可利用指令input在萤幕印出提示文字做为交谈式的输入。 >> r input(Type radius:) % 在两个单引号 之间键入提示文字 Type radius: % 现在键入 2 做为半径值 r 2 >> areapi*r^2; % 键入面积算式 >> …

MATLAB快速入门(二)

一.简介 ​ 本篇参考官方入门文档编写 ​ 前提准备: MATLAB 二. 快速入门(二) 1. 文本和字符 字符串数组中的文本 当您处理文本时,将字符序列括在双引号中。可以将文本赋给变量。 t "Hello, world";如果文本包含…

MATLAB 显示输出数据的三种方式

1. 改变数据格式 当数据重复再命令行窗口时,整数以整形形式显示,其他值将以默认格式显示。MATLAB的默认格式是精确到小数点后4位。如果一个数太大或太小,那么将会以科学记数法的形式显示。比如: >> x100.11x 100.1100>…

Matlab命令行窗口中直接将内容输出disp命令

disp命令:直接在命令行中显示文字或者数组 语法:disp(X) 描述:disp(X)显示X的内容而不打印变量名称。 disp不显示空变量。 实例: 实例1 显示变量内容 创建一个数字数组A和一个字符串S A [15 150]; S…

一文读懂Python列表list的使用

Python中的列表(list)是一种常用的数据结构,用于存储多个元素。列表是可变的、有序的,并且可以容纳任意类型的数据。本文将详细介绍Python列表的使用方法,并提供相关的代码示例。 一、创建列表 可以使用方括号[]或者…

Android WiFi P2P数据传输

WiFi P2P是指通过WiFi直接连接两台设备之间的无线点对点通信,不需要通过路由器或者互联网。这种技术被广泛应用于移动设备之间的文件共享、游戏联机、音乐播放等应用场景中。 WiFi P2P的优点在于可以在没有网络的情况下建立设备之间的连接,同时具有高速…

【保姆级教程】Vue项目调试技巧

前言 在Vue项目开发过程中,当遇到应用逻辑出现错误,但又无法准确定位的时候,知晓Vue项目调试技巧至关重要,debug是必备技能。 同后台项目开发一样,可以在JS实现的应用逻辑中设置断点,并进行单步、进入方法…

C++初阶—stackqueue

目录 1. stack的介绍和使用 1.1 stack的介绍 1.2 stack使用及OJ 1.2.1 最小栈 1.2.2 栈的弹出压入顺序 1.2.3 逆波兰表达式求值 1.2.4 用两个栈实现一个队列 2. queue的介绍和使用 2.1 queue的介绍 2.2 queue的使用及OJ 2.2.1 用队列实现栈 2.3 queue的模拟实现 3…

iOS开发问题---xcode9 iphone7真机模拟出现 iPhone7 is busy:Preparing debugger support for ....

xcode9 iphone7真机模拟出现 iPhone7 is busy:Preparing to support debugger for iPhone7: 解决方案: 1、重启模拟机(亲测有效) 2、重启Xcode 友情链接: http://www.guangjiangk.com