栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Matlab中print, fprint, fscanf, disp函数的用法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Matlab中print, fprint, fscanf, disp函数的用法

最近一直在用python,导致学习的一些函数就有点混淆,趁着这会儿看代码,就再回顾下Matlab中print, fprint, fscanf, disp函数的用法

一、print() 函数可以把函数图形保存成图片:

minbnd = -4*pi;
maxbnd = 4*pi;
t = minbnd:0.1*pi:maxbnd;
plot(t, sin(t), 'g', 'Linewidth', 2);
line([minbnd, maxbnd], [0, 0]); %绘制x轴
axis([-10, 10, -2, 2])  %定义显示的坐标区间:x在(-10,10)之间,y在(-2,2)之间
grid on;
title('sin(x)');
xlabel('x');
ylabel('sin(x)');
print('-dpng','sin.png'); %保存为png图片,在Matlab当前的工作目录下

保存的位置是在与该程序相同的大目录下面。

% 表示保存为png图片,文件名为sin.png,其中第一个参数可以是:

% -dbmp:保存为bmp格式
% -djpeg:保存为jpeg格式
% -dpng:保存为png格式
% -dpcx:保存为pcx格式
% -dpdf:保存为pdf格式
% -dtiff:保存为tiff格式

二、fprintf()函数格式化输出数据

语法格式 fprintf (format,data)

其中常见的格式有:

示例如下:

>>  fprintf('d=%dn', 5)        
d=5
>>  fprintf('d=%fn', 5)
d=5.000000
>>  fprintf('d=%f, a=%sn', 5,'qwe')
d=5.000000, a=qwe

>> fprintf('d:%f, a:%sn', 5,'qwe')
d:5.000000, a:qwe

>>fprintf('d=%f,n a=%sn', 5,'qwe')
d=5.000000,
a=qwe

 其中 n 表示换行的意思;在引号里面的是自己想要显示的解释,可以用等号,也可以用冒号;

另外 fprintf()函数可以将数据按指定格式写入到文本文件.text中。

 fp = fopen('test.txt','a+');                              % 可以直接创建test.txt(以前可以不用存在)
 fprintf(fp,'%dn %dn',123456,789);            % 将123456和789写到test.txt文件中
 fprintf(fp,'%sn %sn','China','ChongQing');

 % 将字符串China和ChongQing追加写到test.txt文件中
 fclose(fp);

三、fscanf()函数对本文数据读取

一般有三种表示方法

A = fscanf(fileID,formatSpec)

% 将打开的文本文件中的数据读取到列向量 A 中,并根据 formatSpec 指定的格式 解释文件中的值。fscanf 函数在整个文件中重新应用该格式,并将文件指针定位在文件结尾标记处。


  
A = fscanf(fileID,formatSpec,sizeA)

% 将文件数据读取到维度为 sizeA 的数组 A 中,并将文件指针定位到最后读取的值之后。fscanf 按列顺序填充 A。sizeA 必须为正整数或采用 [m n] 的形式,其中 m 和 n 为正整数。
 
[A,count] = fscanf(___)

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

如果 fscanf 无法将 formatSpec 与数据相匹配,将只读取匹配的部分并停止处理。该文本文件由文件标识符 fileID 指示。使用 fopen 打开 文件,指定字符编码,以及获取 fileID 值。读取文件后,请调用 fclose(fileID) 来关闭 文件。

注意:

  • 读取函数 sscanf 和 fscanf 的格式设定符不同于写入函数 sprintf 和 fprintf 的格式。读取函数不支持精度字段。宽度字段指定可写入的最小值和可读取的最大值。(这个目前自己还没有咋注意到)

例子:

1. 将 文件内容 读取到 列向量 中

创建一个包含浮点数的示例文本文件。如下所示:

x = 100*rand(8,1);
fileID = fopen('nums1.txt','w');
fprintf(fileID,'%4.4fn',x);                % 将数据按浮点数的格式 写入 到文本文件 nums1.txt
fclose(fileID);

结果:

type nums1.txt
81.4724
90.5792
12.6987
91.3376
63.2359
9.7540
27.8498
54.6882

读取 文件数据并 按列顺序 填充输出数组 A。fscanf 在整个文件中重新应用格式 formatSpec。如下所示:

fileID = fopen('nums1.txt','r');       %  打开要读取的文件并获取文件标识符 fileID

formatSpec = '%f';                       %  定义要读取的数据的格式。使用 '%f' 指定浮点数

A = fscanf(fileID,formatSpec)

fclose(fileID);

输出结果:
A = 8×1
 
   81.4724
   90.5792
   12.6987
   91.3376
   63.2359
    9.7540
   27.8498
   54.6882

2. 将文件内容读取到 数组 中

创建一个包含整数和浮点数的示例文本文件。如下所示:

x = 1:1:5;
y = [x;rand(1,5)];
fileID = fopen('nums2.txt','w');
fprintf(fileID,'%d %4.4fn',y);             %  %d %4.4fn中间是空格
fclose(fileID);

结果:

type nums2.txt
 
2 0.9058
3 0.1270
4 0.9134
5 0.6324

读取 文件数据并按列顺序(注意是以列的顺序,也就是先存储A的第一列,然后第二列.......,) 填充输出数组 A。fscanf 在整个文件中重新应用格式 formatSpec。如下所示:

fileID = fopen('nums2.txt','r');  %  打开要读取的文件并获取文件标识符 fileID

formatSpec = '%d  %f';          % 定义要读取数据的格式 %f也可用自动识别控制符%g代替
sizeA = [2 Inf];    %  定义输出数组形状,其中 n取inf 则表示读到文件末尾(m 不能取inf )

A = fscanf(fileID,formatSpec,sizeA)

fclose(fileID);


输出结果:
A = 2×5
 
    1.0000    2.0000    3.0000    4.0000    5.0000
    0.8147    0.9058    0.1270    0.9134    0.6324

转置该数组,以便 A 与文件中数据的方向匹配。如下所示:

A = A'

输出结果:

A = 5×2
    1.0000    0.8147
    2.0000    0.9058
    3.0000    0.1270
    4.0000    0.9134
    5.0000    0.6324

3.  跳过文件中的特定字符

  跳过示例文件中的特定字符并仅返回数值数据。创建一个包含温度值的示例文本文件。

str = '78°C 72°C 64°C 66°C 49°C';
fileID = fopen('temperature.dat','w');
fprintf(fileID,'%s',str);
fclose(fileID);

 读取文件中的数字并跳过文本 °C。此外,还返回 fscanf。读取的值数。扩展的 ASCII 代码 176 表示度数符号。

fileID = fopen('temperature.dat','r');
degrees = char(176);
[A,count] = fscanf(fileID, ['%d' degrees 'C'])
fclose(fileID);
 
A =
 
    78
    72
    64
    66
    49

count =
 
     5

% A 是一个包含文件中的数值的向量。count 指示 fscanf 读取五个值

四、disp()函数 用来显示或者输入数字、字符串或者数组

1. disp()函数  显示变量X的值,但不打印变量名(注意这里的输出是没有变量名的,即不带"a= ... b=...,c=...'')。

a=3;                        % 输出数字
disp(a);
b = 'hello world';     % 输出字符串
disp(b);
c = rand(5,5);         % 输出数组
disp(c);

输出的结果:

3

hello world
    0.7577    0.7060    0.8235    0.4387    0.4898
    0.7431    0.0318    0.6948    0.3816    0.4456
    0.3922    0.2769    0.3171    0.7655    0.6463
    0.6555    0.0462    0.9502    0.7952    0.7094
    0.1712    0.0971    0.0344    0.1869    0.7547

一般情况下的先对变量定义,然后调用,直接输出变量名和数值

a=3;
b = 'hello world';
c = rand(5,5);
a
b
c

输出的结果:

a =

     3


b =

hello world


c =

    0.4173    0.4893    0.7803    0.1320    0.2348
    0.0497    0.3377    0.3897    0.9421    0.3532
    0.9027    0.9001    0.2417    0.9561    0.8212
    0.9448    0.3692    0.4039    0.5752    0.0154
    0.4909    0.1112    0.0965    0.0598    0.0430

2. 一种显示变量的方法是键入它的名称,但是这会显示一个开头的“X =”,这并不总是理想的,如果一个变量包含一个空数组,disp返回时不显示任何内容。

a=3;
disp(['a=',num2str(a)]);            % num2str函数将任何数值转换为字符

b = 'hello world';
disp(['b=',num2str(b)]);

c = rand(5,5);
disp('c=');
disp(c);

输出结果:

a=3
b=hello world
c=
    0.6443    0.9390    0.2077    0.1948    0.3111
    0.3786    0.8759    0.3012    0.2259    0.9234
    0.8116    0.5502    0.4709    0.1707    0.4302
    0.5328    0.6225    0.2305    0.2277    0.1848
    0.3507    0.5870    0.8443    0.4357    0.9049

3.  在同一行显示多个变量,这里有三种方法可以在命令窗口的同一行显示多个变量值。

(1)、使用 [ ] 操作符将多个字符串连接在一起。使用num2str函数将任何数值转换为字符。 使用disp 显示字符串。

>name = 'Alice';

>>age = 12;

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

>>disp(X)

(2)、使用 sprintf 创建一个字符串,然后用disp显示它。

>>name = 'Alice';

>>age = 12;

>>X = sprintf('%s will be %d this year.', name,age);

>>disp(X)

(3)、使用 fprintf 直接显示字符串,无需创建变量。但是,要正确地终止显示,必须使用换行(n)。

>>name = 'Alice';

>>age = 12;

>>fprintf('%s will be %d this year.n',name,age);

1.matlab的输出(命令窗口、fprint函数、disp函数)_csdn_1HAO的博客-CSDN博客_matlab输出函数

2. C语言之文件读写——fscanf(),fprintf()详解_追求卓越583的博客-CSDN博客_fscanf读取txt文件

3. Matlab中fscanf函数使用_jk_101的博客-CSDN博客_fscanf matlab

4. Matlab基本函数----disp函数_爱听雨声的北方汉的博客-CSDN博客_matlab中disp函数

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/934967.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号