搜档网
当前位置:搜档网 › 实验八MATLAB文件操作与数据导入导出

实验八MATLAB文件操作与数据导入导出

实验八MATLAB文件操作与数据导入导出
实验八MATLAB文件操作与数据导入导出

实验八 Matlab 文件操作与数据接口

一、实验目的

1、熟练掌握工作区变量的文件操作;

2、熟练掌握文本文件的读写操作;

3、熟练掌握格式化文本文件的输入输出语句的执行

4、了解二进制文件、Mat文件的读写操作

二、实验仪器与软件

1. PC计算机

2. Matlab软件

三、实验原理

1. 二进制文件与文本文件的区别:

将文件看作是由一个一个字节(byte) 组成的,那么文本文件中的每个字节的最高位都是0,也就是说文本文件使用了一个字节中的七位来表示所有的信息,而二进制文件则是将字节中的所有位都用上了。这就是两者的区别;接着,第二个问题就是文件按照文本方式或者二进制方式打开,两者会有什么不同呢?其实不管是二进制文件也好,还是文本文件也好,都是一连串的0和1,但是打开方式不同,对于这些0和1的处理也就不同。如果按照文本方式打开,在打开的时候会进行translate,将每个字节转换成ASCII 码,而以按照二进制方式打开的话,则不会进行任何的translate;最后就是文本文件和二进制文件在编辑的时候,使用的方式也是不同的。譬如,你在记事本中进行文本编辑的时候,你进行编辑的最小单位是字节(byte);而对二进制文件进行编辑的话,最小单位则是位(bi t),当然我们都不会直接通过手工的方式对二进制文件进行编辑了。

从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种:ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式为:

ASCII码:00110101 00110110 00110111 00111000

↓↓↓↓

十进制码:5678

共占用4个字节。ASCII码文件可在屏幕上按字符显示,例如源程序文件就是A SCII文件,用DOS命令TYPE可显示文件的内容。由于是按字符显示,因此能读懂文件内容。

二进制文件是按二进制的编码方式来存放文件的。例如,数5678的存储形式为:00010110 00101110 只占二个字节。二进制文件虽然也可在屏幕上显示,但其内容无法读懂。Matlab 中存储成为二进制还是文本文件取决于fopen的方式,如果用wt,则存储为文本文件,这样用记事本打开就可以正常显示了;如果用w则存储为二进制文件,这样用记事本打开会出现小黑方块,要正常显示的话,可以用写字板或UltraEdit等工具打开。

2. MATLAB文件操作与数据导入导出

2.1 文件的打开和关闭

2.1.1 文件的打开

无论是要读写ASCII码文件还是二进制文件,都必须先用fopen函数将其打开,在默认情况下,fopen以二进制格式打开文件,它的使用语法如下:

fopen ('filename', 'mode')

其中filename表示要读写的文件名称,mode则表示要对文件进行的处理方式,可以是表2-1中的任一字符串。

表2-1 文本文件打开的模式

fopen函数有两个返回值,一个是返回一个文件标志(file Identifier),它会作为参数被传入其他对文件进行读写操作的命令,通常是一个非负的整数,可用此标识来对此文件进行各种处理。如果返回的文件标识是–1,则代表fopen 无法打开文件,其原因可能是文件不存在,或是用户无法打开此文件权限。另一个返回值就是message,用于返回无法打开文件的原因。为了安全起见,最好在每次使用fopen函数时,都测试其返回值是否为有效值。

下面以脚本m文件为例来声明文件的打开。

例2-1 %exam1.m

[f,message]=fopen('fileexam1', 'r')

if f==-1

disp (message); %显示错误信息

end

若文件fileexam1不存在,则显示如下信息。

Cannot open file.existence?permissions?memory?...

例2-2 %exam2.m

[f,message]=fopen('fileexam2', 'r');

if f==-1

disp (message); %显示错误信息

else

disp(f);

end

若文件fileexam2存在,则返回f值。

2.1.2 文件的关闭

一旦完成文件的读写,最好关闭文件,以便对其进行其他操作。这时就可以使用fclose函数来关闭文件,其适用语法如下。

fclose(f)

其中f为打开文件的标志,若fclose函数返回值为0,则表示成功关闭f标志的文件;若返回值为–1,则表示无法成功关闭该文件。一般来说,在完成对文件的读写操作后就应关闭它,以免造成系统资源浪费。此外,需注意的是,打开和关闭文件都比较耗时,因此为了提高程序执行效率,最好不要在循环体内使用文件。

若要一次关闭打开的所有文件,可以使用下面的命令:

fclose all

2.2 文本数据

虽然MATLAB自带的MAT文件为二进制文件,但为了便于和外部程序进行交换以及方便查看文件中的数据,也常常采用文本数据格式与外界进行数据交换。在文本格式中,数据采用ASCII码格式,可以表示字母和数字字符。

2.2.1 从文本文件中读取数据

1.使用导入模板来读取数据

使用导入模板来读取数据,需按以下步骤进行:

(1) 选择File→Import Data选项,然后弹出一个文件选择对话框;也可以使用uiimport函数来打开导入数据模板。

(2) 在文件选择对话框中选择想导入数据的文本文件,然后单击Open按钮,导入数据模板就会打开该文件并准备处理其内容。

(3) 指定用于分开单个数据的字符,该字符称为分隔符或列分隔符。在多数情况下可以用导入模板来设定分隔符。

(4) 选择要导入的变量。在默认情况下,导入模板将所有的数值数据放在一个变量中,而将文本数据放在其他变量中。

(5) 单击Finish按钮完成数据的导入。

当使用导入模板来打开一个文本文件时,在导入模板对话框的预览区仅显示原始数据的一部分,通过它,用户可以验证该文件中的数据是否为所期望的。导入模板也根据文件中的数据分隔符来对导入的数据进行预处理。在导入模板中打开工作区中的grade.txt文件。

english math physic

joe 80 90 60

susan 78 98 88

rob 67 90 89

图2-1 将数据通过模板导入

在图2-1中,导入模板已辨认space字符,把它作为文件中数据的分隔符,并建立了两个变量:data(包含文件中所有数值数据)和textdata(包含文件中所有文本数据)。

当导入模板正确导入文件中的数据后,就会显示它所建立的变量。要选择一个变量来导入数据,可单击它名称后面的复选框。在默认情况下,所有变量都会被选中。在导入对话框的右面显示了导入模板建立的变量内容。要查看其他变量,只需要单击该名称。在选择好要导入的变量后,单击Next按钮,如图2-2所示。

图2-2 使用模板查看各变量数据

在默认情况下,导入模板将文件中所有的数值数据放在一个变量中;若文件包含文本数据,则模板将它们放在另外一个变量中;若文件包含行或列,模板也将它们作为各自独立的变量分别称为行头和列头。

2. 使用函数来读取文本数据

若要在命令行或在一个 M 文件中读取数据,必须使用 MATLAB 数据函数,函数的选择则是依据文本文件中数据的格式。而且文本数据格式在行和列上必须

采取一致的模式,并使用文本字符来分隔各个数据项,称该字符为分隔符或列分隔符。分隔符可以是space、comma、semicolon、ab或其他字符,单个的数据可以是字母、数值字符或它们的混合形式。

文本文件也可以包含称之为头行的一行或多行文本,或可以使用文本头来标志各列或各行。在了解要输入数据的格式之后,便可以使用 MATLAB 函数来读取数据了。若对 MATLAB 函数不熟悉,可从表2-2中了解几个读取函数的一些使用特征。

表2-2 读取函数的比较

3. 读取数值文本数据

若用户的数据文件只包含数值数据,则可以使用许多MATLAB函数,这取决于这些数据采用的分隔符。若数据为矩形形状,也就是说,每行有同样数目的元素,这时可以使用最简单的命令load(load也能用于导入MAT文件,该文件为用于存储工作空间变量的二进制文件,如果文件名后缀是.dat,则MATLAB会以MAT 文件格式进行读取)。

例如,文件my_data.txt包含了两行数据,各数据之间由space字符隔开。

当使用load时,它将读取数据并在工作空间中建立一个与该文件同名的变量,但不包括扩展名。

>>load my_data.txt;

调用whos命令查看工作空间的变量。

>> whos

Name Size Bytes

Class Attributes

data 3x3 72

double

my_data 3x4 96

double

textdata 4x1 314

cell

此时可以查看与该文件同名的变量的值

>> my_data

my_data =

0.3242 0.4324 0.3455 0.6754

0.4566 0.9368 0.9892 0.9274

0.4658 0.2832 0.9373 0.8233

若想将工作空间的变量以该文件名命名,则可以使用函数形式的load,下面的语句将文件导入工作空间并赋给变量A

A=load('my_data.txt');

4. 读取有分隔符的ASCII数据文件

如果数据文件不使用空格符而是使用逗号或是其他符号作为分隔符,用户可以选择多个可用的导入数据函数。最简单的便是使用函数dlmread。

举个例子来说,一个名为lcode.dat的数据文件,数据内容由逗号分隔。

0.3445,0.8433,0.7865

0.7562,0.4233,0

要把该文件的全部内容读入阵列A,只须输入如下命令:

>> A=dlmread('lcode.dat',',')

即可以把数据文件中使用的分隔符作为函数dlmread的第二个参数。

注意:

即使每行的最后一个数据后面不是逗号,dlmread函数仍能正确读取数据,因为dlmread忽略了数据之间的空格符。因此,即使数据为如下格式,前面的dlmread命令仍能正常工作。

A =

0.3445 0.8433 0.7865

0.7562 0.4233 0

另外需要注意的是,分隔符只能选取单个字符,不能用字符串来作为分隔符。

5. 使用文本头读取数值数据

要读取一个包含文本头的ASCII码数据文件,可以使用textread函数,并指定头行参数。调用函数textread 同样非常简单,同时对文件读取的格式处理能力更强,函数接收一组预先定义好的参数,由这些参数来控制变量的不同方面。Textread既能处理有固定格式的文件,也可以处理无格式的文件,还可以对文件中每行数据按列逐个读取。

textread函数常见的调用方法有如下几种:

[A,B,C…]=textread('filename', 'format')

[A,B,C…]=textread('filename', 'format',N)

例如文件my_data.txt包含了如下文件内容,有一行文本头,且格式化的数值数据。

num1 num2 num3 num4

0.3242 0.4324 0.3455 0.6754

0.4566 0.9368 0.9892 0.9274

0.4658 0.2832 0.9373 0.8233

因为有文件头,要使用如下textread命令来读取文件中的数据。

>> [num1 num2 num3 num4]=textread('my_data.txt','%f %f %f %f','headerlines',1)

执行结果如下:

num1 =

0.3242

0.4566

0.4658

num2 =

0.4324

0.9368

0.2832

num3 =

0.3455

0.9892

0.9373

num4 =

0.6754

0.9274

0.8233

6. 读取字母数值混合的数据

若数据文件中包含了字母和数值混合的ASCII码数据,也可以使用函数textread来读取数据。由上一小节知道,函数textread可以返回多个输出变量,实际上用户还可以通过参数指定每个变量的数据类型。

例如要把文件my_exam.dat的全部内容读入工作空间,需要在textread行数的输入参数中指定数据文件的名称和格式。

文件my_exam.dat包含的混合的字母和数值如下:

Joe gradeA 4.9 pass

susan gradeD 2.0 fail

如果想把4列数据全部读取出放在4个变量中,则使用如下命令:

>> [name gra grades answer]=textread('my_exam.dat','%s %s %f %s')

在这里要注意命令中格式字符串的定义,对于格式字符串中定义的每种变换,必须指定一个单独的输出变量,textread 函数按格式字符串中指定的格式处理文件中的某个数据项,并把值放在输出变量中。输出变量的数目必须和格式字符串中指定的变换数目项匹配,在该例中,函数按格式字符串来读取文件

my_exam.dat的每一行,直到文件读完,该命令的执行结果是:

name =

'Joe'

'susan'

gra =

'gradeA'

'gradeD'

grades =

4.9000

2.0000

answer =

'pass'

'fail

另外,textread函数可以有选择地读取数据,比如我们不需要取出中间几列数据,只取出第一列和最后一列数据,则可以使用命令:

>> [name answer]=textread('my_exam.dat','%s %*s %*f %s')

name =

'Joe'

'susan'

answer=

'pass'

'fail'

若文件采用的分隔符不是空格,则必须使用函数textread ,将该分隔符作为它的参数。例如,若文件my_exam.dat 使用分号作为分隔符,则读入该文件需使用如下命令:

[name gra grades ans]=textread('my_exam.dat','%s %s %f %s',

'delimiter', '; ')

2.2.2 存写ASCII码数据

本小节介绍如何使用MATLAB函数按几种通用的ASCII码格式来存写数据,即如何使用这些函数来把一个MATLAB数值矩阵写入到一个文本文件中,其中该矩阵的列和行使用空格符来分隔。用户采用什么函数取决于所要存写数据的数据量和数据格式。

常用的两种ASCII码数据格式如下:

●采用空格符分隔;

●采用分号分隔。

MATLAB的存写数据函数如表2-3所示。

表2-3 数据存写函数

1. 存写有分隔符的ASCII码数据文件

若要将当前的MATLAB工作空间的一个或多个变量写到一个有分隔符的ASCII码文件中,可以使用save命令或dlmwrite函数。在默认情况下,save命令是以 MAT 格式存写数据的,这部分内容我们在后面详细介绍,本小节主要介绍 save命令通过ASCII码限定符以文本方式存写数据。而dlmwrite函数则可以提供更大的灵活性,它允许用户把任何字符指定为分隔符,也可以通过指定一个值域存写一个阵列的子阵列。

>> clear all;

>> x=rand(2,3);

>> save my_test1.dat x –ascii;

该命令将变量x中的数据存写到my_test1.dat文件中。通过文本编辑器,我们可以查看该文件的内容:

9.2181297e-001 1.7626614e-001 9.3546970e-001

7.3820725e-001 4.0570621e-001 9.1690444e-001

我们也可以将命令中的文件名和变量名省略,那样的话,命令的执行结果则是把当前 MATLAB工作空间中的所有变量保存到matlab.mat文件中。需要指明的是这时的文件虽然后缀名为.mat,但文件内容仍然是以文本方式保存的。

在默认情况下,save命令使用空格作为分隔符,但用户可以通过指定-tabs 限定符来使用制表符而不是空格符作为分隔符。当使用save命令把一个字符阵列写入ASCII文件时,将ASCII码写入文件也就等于把字符写入文件。

若要以ASCII码形式存写一个阵列,并指定文件使用的分隔符,需要使用dlmwrite函数,比如重新指定分号作为分隔符,把变量x存到文件 my_test2.dat 文件中,查看其结果:

0.92181;0.17627;0.93547

0.73821;0.40571;0.9169

在默认情况下,dlmwrite函数用逗号或空格作为分隔符,或者是指定空的引号,即无分隔符。

2. 使用diary命令来存写数据

较小的数值阵列或单元阵列的存写可以使用diary命令,例如,在工作空间中有一个阵列A: A=[1 2 3 4 5; 6 7 8 9 10]

在命令提示符下执行如下命令:diary my_test3.dat,就可以创建

my_test3.dat文件。接下来显示要存写的阵列A:

A =

1 2 3 4 5

6 7 8 9 10

然后执行关闭diary命令:diary off。

这时,在文本编辑器中打开my_test3.dat文件,会发现diary命令创建的文件记录了在MATLAB会话期间的所有命令。可以通过编辑,删去无关的文本

2.3 二进制数据

2.3.1 二进制数据的读取

本小节将介绍怎样将一般格式下的二进制数据文件读取到工作空间中。读取二进制数据常用的方法有两种,一是使用导入模板来导入,二是使用二进制数据导入函数来读取。

1. 使用导入模板读取二进制数据

要使用导入模板来读取二进制数据,需按以下步骤进行:

(1) 选择File→Import Data选项,弹出一个文件选择对话框;也可以使用uiimport函数来打开导入数据模板。

(2) 在文件选择对话框中选择想导入数据的二进制数据文件,然后单击Open按钮,导入数据模板就会打开该文件并准备处理其内容。

(3) 选择要导入的变量。在默认情况下,导入模板将要建立的变量取决于文件中的数据类型。

(4) 单击Finish按钮完成数据的导入。

这个过程和使用导入模板读取文本文件是基本一致的,这里就不再举例了。

2. 使用导入函数读取二进制数据

若要从命令行或一个 M 文件中读取二进制数据,就必须使用 MATLAB 导入函数,函数的选择取决于文件中数据的格式,这些函数如表2-4所示。

表2-4 导入二进制数据函数

2.3.2 二进制数据的存写

要以一种标准二进制格式来存写二进制数据,可以使用 MATLAB 提供的高端函数,函数的选择取决于要存写数据的类型,这些函数如表2-5所示。

表2-5 导出二进制数据函数

在MATLAB中可以将一系列的图像保存为电影,这样使用电影播放函数就可以进行回放,保存方法可以同保存其他MATLAB工作空间变量一样,通过采用MAT 文件格式保存。但是若要浏览该电影,必须在MATLAB环境下。在以某种格式存写一系列的MATLAB图像时,不需要在MATLBA 环境下进行预览,通常采用的格式为AVI格式。AVI是一种文件格式,在PC 机上的Windows系统或UNIX操作系统下可以进行动画或视频的播放。

若要以AVI格式来存写MATLAB图像,步骤如下:

(1) 用avifile函数建立一个AVI文件。

(2) 用addframe函数来捕捉图像并保存到AVI 文件中。

(3) 使用close函数关闭AVI文件。

注意:

若要将一个已经存在的MATLAB电影文件转换为AVI文件,需使用函数movie2avi。函数原型为:

movie2avi(mov,filename)

movie2avi(mov,filename,param,value,param,value…)

2.4 使用文件I/O函数

前面介绍的都是MATLAB中的一些高级函数,除此之外MATLAB还包含了一组低端的文件I/O函数,如前面介绍的所有文件的打开和关闭函数:fopen函数和fclose函数。这些函数是建立在ANSI标准C库中的I/O函数。若用户对C语言熟悉的话,那么也肯定熟悉这些函数。比如,MATLAB 文件I/O函数使用和C 语言同样的编程模式等。要读写这些数据,需进行以下几步:

(1) 使用fopen函数打开文件。fopen函数将会返回一个文件标志,通过它,就可以使用其他所有的低端文件I/O函数。

(2) 对文件进行操作,如:读写二进制数据、格式化读写文本数据等。

(3) 使用fclose函数来关闭文件。

2.4.1 二进制数据的读取

使用fread函数可从文件中读取二进制数据,它将每个字节看成整数,并将结果以矩阵形式返回。对于读取二进制文件,fread必须制定正确的数据精度。

fread的基本调用方法是:

A=fread(fid)

其中fid是一个整数型变量,是通过调用fopen函数获得的,表示要读取的文件标识符,输出变量A为矩阵,用于保存从文件中读取的数据。

例如文件test.txt的内容如下:

test it

用fread函数读取该文件,输入如下命令:

>> f=fopen('test.txt','r');

>> answer=fread(f)

answer =

116

101

115

116

32

105

116

输出变量的内容是文件数据的ASCII码值,若要验证读入的数据是否正确,通过下面的命令可以验证。

>> disp(char(ans1'))

test it

fread函数的第二个输入参数可以控制返回矩阵的大小,例如:

>> f=fopen('test.txt','r');

>> answer=fread(f,2)

answer =

116

101

也可以把返回矩阵定义为指定的矩阵格式,例如

>> f=fopen('test.txt','r');

>> an=fread(f,[2 3])

answer =

116 115 32

101 116 105

使用fread函数的第三个输入变量,可以控制fread将二进制数据转成MATLAB 矩阵用的精度,包括一次读取的位数(Number of Bits)和这些位数所代表的数据类型。

常用的精确度类型有下列几种,如表2-6所示。

表2-6 常见的精确度类型

2.4.2 二进制数据的写入

使用fwrite函数可将矩阵按所指定的二进制格式写入文件,并返回成功写入文件的大小。函数的调用方式如下:

count=fwrite(fid,A,precision)

其中,count用来返回写入文件数据的大小,f参数同样是通过fopen函数获得的整数型变量,表示文件标识符,A表示要写入的数据矩阵,第三个参数precision同二进制读取函数的参数一样,表示数据的写入格式。

在下例中fwrite产生一个大小为100字节的二进制文件,它包含了一个5×5阶魔方矩阵,共25个元素,每个元素占用4个字节。

f=fopen('magic5.bin', 'w');

fwrite(f,magic(5), 'int32');

fclose(f)

二进制文件在不同的计算机架构上可能存储方式不同,所以二进制文件存在兼容性问题,而文本文件则不存在这种兼容性问题。不同的存储方式导致在不同架构上保存的二进制文件在另外的平台上无法读取,这主要是因为多字节数据类型在计算机硬件上的存储顺序不同。在MATLAB中,无论计算机上的数据存储顺序是哪一种,都可以读写二进制文件,但要正确地调用fopen函数打开文件。

2.4.3 格式化读取ASCII码数据

fscanf函数与C语言中的fscanf在结构、含义和使用上都很相似,即能够从一个有格式的文件中读入数据,并将它赋给一个或多个变量。两个函数都采用同一组格式指定符来控制输入数据的格式,fscanf的格式指定符由字符%开头,常用格式如表2-7所示。

表2-7 常见的用于输入的格式转换符

例如,我们仍然读取my_test.dat文件中的数据,其数据内容是:

4.5646767e-001 8.2140716e-001 6.1543235e-001

1.8503643e-002 4.4470336e-001 7.9193704e-001

通过下面这段代码,将该文件中的数据读取到列向量T中。

>> f=fopen('my_test.dat','r');

>> T=fscanf(f,'%g');

>> fclose(f)

也可以通过以下代码段把文件数据读取到一个3×2矩阵A中。

>> f=fopen('my_test.dat','r');

>> A=fscanf(f,'%g',[3 2]);

>> fclose(f)

执行后结果如下,这时候A矩阵恰好是文件中数据矩阵的转置。

>> A

A =

0.4565 0.0185

0.8214 0.4447

0.6154 0.7919

2.4.4 格式化写入文本数据

fprintf将会把数据转换为字符串,并将它们输出到屏幕或文件中。一个格式控制字符串包含转换指定符和可选的文本字符,通过它们来指定输出格式。转换指定符用于控制阵列元素的输出。

当fprint函数做标准输出,也就是运行结果显示在屏幕上的时候,它的功能和disp函数相类似,区别仅在于fprint可以输出特定格式的文本数据。

比如,创建一个2×2的魔方矩阵,然后打开一文件,写入数据。

>> clear all;

>> x=magic(2);

>> fid=fopen('exam4.txt','w');

>> fprintf(fid,'%4.2f %8.4f\n',x);

>> fclose(fid);

执行这段程序段之后,我们可以检验一下执行结果:

>> x

x =

1 3

4 2

>> type exam4.txt

1.00 4.0000

3.00 2.0000

可以看出,fprintf函数在打印显示矩阵数据时,数据转换规则是可以按列方式循环作用于矩阵的各个元素的,这个例子中显示出来的结果就好像原矩阵的转置,而且分别按数据转换规则显示。

2.4.5 控制文件位置指针

每一次打开文件时,MATLAB就会保持一个文件位置指针(File Position Indicator),由它决定下一次进行数据读取或写入的位置。控制此指针的函数如表2-8所示。

表2-8 控制位置指针的函数

fseek 函数用于指定文件指针的位置,调用方式如下:

status=fseek(fid,offset,origin)

fid是指定的文件标识符。offset为整数型变量,表示相对于指定位置需要的偏移字节数,正数表示向文件末尾偏移,负数表示向文件开头偏移。Origin 可以是特定字符串,也可以是整数,表示文件中的参考位置。参考位置的参数说明如表2-9所示。

表2-9 参考位置参数的说明

ftell 函数用来获得当前文件指针的位置,调用方式如下:

position=ftell(fid)

fid是指定的文件标识符。Position为返回值,表示当前指针的位置。position是以相对于文件开头的字节数来表示的。如果返回值为–1,表示未能成功调用。这是可以通过调用feeeor(fid)的具体的错误信息。

frewind 函数用来把文件指针重新复位到文件开头。调用方式如下:

frewind(fid)

其中fid为指定的文件标识符,其作用和fseek(fid,0,-1)是等效的。

feof 函数用来判断是否到达文件末尾。调用方式如下:

eofstat=feof(fid)

其中fid为指定的文件标识符。eofstat是返回值,当到达文件末尾时,eofstat为1;否则为0。比如我们仍然对文件my_test.dat执行以下命令,然后测试文件指针位置

>> f=fopen('my_test.dat','r');

>> A=fscanf(f,'%g',[3 2])

MATLAB数学实验第二版答案(胡良剑)

数学实验答案 Chapter 1 Page20,ex1 (5) 等于[exp(1),exp(2);exp(3),exp(4)] (7) 3=1*3, 8=2*4 (8) a为各列最小值,b为最小值所在的行号 (10) 1>=4,false, 2>=3,false, 3>=2, ture, 4>=1,ture (11) 答案表明:编址第2元素满足不等式(30>=20)和编址第4元素满足不等式(40>=10) (12) 答案表明:编址第2行第1列元素满足不等式(30>=20)和编址第2行第2列元素满足不等式(40>=10) Page20, ex2 (1)a, b, c的值尽管都是1,但数据类型分别为数值,字符,逻辑,注意a与c相等,但他们不等于b (2)double(fun)输出的分别是字符a,b,s,(,x,)的ASCII码 Page20,ex3 >> r=2;p=0.5;n=12; >> T=log(r)/n/log(1+0.01*p) Page20,ex4 >> x=-2:0.05:2;f=x.^4-2.^x; >> [fmin,min_index]=min(f) 最小值最小值点编址 >> x(min_index) ans = 0.6500 最小值点 >> [f1,x1_index]=min(abs(f)) 求近似根--绝对值最小的点 f1 = 0.0328 x1_index = 24 >> x(x1_index) ans = -0.8500 >> x(x1_index)=[];f=x.^4-2.^x; 删去绝对值最小的点以求函数绝对值次小的点 >> [f2,x2_index]=min(abs(f)) 求另一近似根--函数绝对值次小的点 f2 = 0.0630 x2_index = 65 >> x(x2_index) ans = 1.2500

将PSCAD中的数据导入MATLAB

如何将PSCAD/EMTDC中的数据导入MATLAB中呢? 以接地极线路单线接地故障(将模型命名为WLDanjiedi01)为例进行详细的介绍:1、模型建立完毕,右击选择“Project Settings”出现如下界面 将”Save channels to disk?”选择为“Yes”,并在后面的“Output file”进行输出文件的命名,如例文件名命名为“WLDanjiedi01.out”(最好与模型名称一致),将模型保存至XX位置。 2、模型仿真完毕,在XX位置会生成一个名为“WLDanjiedi01.emt”的文件夹, 文件夹中后缀为“WLDanjiedi01-01.out到WLDanjiedi01-06.out”的文件储存着仿真所得到的数据;名为“WLDanjiedi01.inf”的文件是所有数据的说明,如果需要在MATLAB中进行编程处理数据,则要根据此文件中的说明在MATLAB中进行变量的定义。 3、在MATLAB中的工作窗口如下,

单击“Import data”找到“WLDanjiedi01.emt”目录,界面如下 下拉文件类型(T)选择“All Files(*.*)”出现如下界面 选择“WLDanjiedi01-01.out到WLDanjiedi01-06.out”中所需要的即可,例如导入“WLDanjiedi01-01.out”,选中后点击打开,经过一定时间会出现如下界面

选择“Next”,接着选择“Finish”即可完成数据的导入,此时MATLAB中的工作窗口如下,出现了“WLDanjiedi01-01”文件夹。 选中“WLDanjiedi01-01”,界面变成如下,单击“Plot(WLDanjiedi01-01)”会生成此文件夹所包含数据的波形图。

MATLAB基本操作实验报告

南昌航空大学 数学与信息科学学院 实验报告 课程名称:数学实验 实验名称: MATLAB基本操作 实验类型:验证性■综合性□ 设计性□ 实验室名称:数学实验室 班级学号: 10 学生姓名:钟 X 任课教师(教师签名): 成绩: 实验日期: 2011-10- 10

一、实验目的 1、熟悉MATLAB基本命令与操作 2、熟悉MATLAB作图的基本原理与步骤 3、学会用matlab软件做图 二、实验用仪器设备、器材或软件环境 计算机MATLAB软件 三、实验原理、方案设计、程序框图、预编程序等 问题1:在区间【0,2π】画sinx 实验程序: >> x=linspace(0,2*pi,30); >> y=sin(x); >> plot(x,y) 问题2:在【0,2π】用红线画sinx,用绿圈画cosx,实验程序:

>> x=linspace(0,2*pi,30); >> y=sin(x); >> z=cos(x); >> plot(x,y,'r',x,z,'co') >> 问题3:在【0,π】上画y=sinx的图形。 实验程序: >> ezplot('sin(x)',[0,pi]) >> 问题4:在【0,π】上画x=cos3t,y=sin3t星形图形。

实验程序: >> ezplot('cos(t).^3','sin(t).^3',[0,pi]) >> 问题5:[-2,0.5],[0,2]上画隐函数 实验程序: >> ezplot('exp(x)+sin(x*y)',[-2,0.5,0,2]) >> 问题6:在[-2,2]范围内绘制tanh的图形。实验程序: >> fplot('tanh',[-2,2])

MATLAB实验报告

MATLAB程序设计语言 实 验 报 告 专业及班级:电子信息工程 姓名:王伟 学号:1107050322 日期 2013年6月20日

实验一 MATLAB 的基本使用 【一】 实验目的 1.了解MATALB 程序设计语言的基本特点,熟悉MATLAB 软件的运行环境; 2.掌握变量、函数等有关概念,掌握M 文件的创建、保存、打开的方法,初步具备将一般数学问题转化为对应计算机模型处理的能力; 3.掌握二维图形绘制的方法,并能用这些方法实现计算结果的可视化。 【二】 MATLAB 的基础知识 通过本课程的学习,应基本掌握以下的基础知识: 一. MATLAB 简介 二. MATLAB 的启动和退出 三. MATLAB 使用界面简介 四. 帮助信息的获取 五. MATLAB 的数值计算功能 六. 程序流程控制 七. M 文件 八. 函数文件 九. MATLAB 的可视化 【三】上机练习 1. 仔细预习第二部分内容,关于MATLAB 的基础知识。 2. 熟悉MATLAB 环境,将第二部分所有的例子在计算机上练习一遍 3. 已知矩阵???? ??????=??????????=123456789,987654321B A 。求A*B ,A .* B ,比较二者结果是否相同。并利用MATLAB 的内部函数求矩阵A 的大小、元素和、长度以 及最大值。 程序代码: >> A=[1 2 3;4 5 6;7 8 9]; >> B=[9 8 7;6 5 4;3 2 1]; >> A*B ans =

30 24 18 84 69 54 138 114 90 >> A.*B ans = 9 16 21 24 25 24 21 16 9 两者结果不同 >> [m,n]=size(A) m = 3 n = 3 >> b=sum(A) b = 12 15 18 >> a=length(A) a = 3 >>max(A) ans =

MATLAB导入CAD数据

用AutoCAD绘制平面公式曲线(如渐开线、心形线)、空间公式曲线(如螺旋线)以及公式曲面(如马鞍形曲面)是比较困难的,一般情况下,需要用AutoCAD开发程序编程,但多数程序比较复杂,尤其是公式曲面的绘制程序,需要多层嵌套循环,复杂且运行效率低。 快速且精确地绘制各种公式曲线、曲面恰恰是MATLAB的长项,但是MATLAB绘制的图形却不能直接用于机械零件设计。其中非常关键的一点,就是MATLAB绘制的曲线、曲面分别是由有限个点连接而成的折线和空间网格构成的,而在AutoCAD中绘制的曲线、曲面也是如此。因此,只需要把在MATLAB中绘制的公式曲线、曲面上所有的点坐标数据都提取出来,若能让AutoCAD正确识别,那么我们就可以在AutoCAD中精确地绘制这些曲线、曲面了。 本文介绍了一种快速、精确地绘制各种公式曲线、曲面的方法,即在AutoCAD中通过调用经过Excel处理的MATLAB数据实现。 二、AutoCAD和MATLAB的特点 MATLAB是非常优秀的科学计算、信号处理以及图形显示软件,它有自身的语言,与其他高级语言相比,MATLAB提供了一个人机交互的数学环境,并以矩阵作为基本的数据结构,可大大节省编程时间。另外,MATLAB不仅语法规则简单,容易掌握,调试方便,还可以存储中间结果,这使得MATLAB既可以快捷、精确地绘制各种公式曲线、曲面,又可以很方便地提取中间数据。 在工业设计领域,AutoCAD不仅被广泛应用于平面绘图,也可以用于三维建模,但在曲线、曲面造型方面不是很理想。它是开放型的人机交互系统,有多种语言接口,与外界的数据交换很灵活,这些特点使得它与MATLAB的结合成为可能。 三、结合MATLAB在AutoCAD中绘制曲线、曲面的原理及方法 1.原理 MATLAB中的矩阵数据虽然很容易提取,但由于它不是AutoCAD能识别的格式,因此不能直接被AutoCAD调用,需要先用Excel对从MATLAB中提取的数据进行编辑,转换成AutoCAD可以识别的格式,才能在AutoCAD中绘出曲线、曲面。 2.方法 由于在AutoCAD中绘制平面曲线、空间曲线和曲面的绘制命令不同,且数据结构也不同,因此结合MATLAB的绘制方法也稍有区别。这种绘制方法的关键就是把数据格式转换成AutoCAD的绘制命令所需要的数据格式,只要熟悉AutoCAD的数据结构,就可以举一反三。 (1)利用MATLAB得到公式曲面数据 1)在MATLAB中绘制出曲面 在MATLAB中输入如下命令: [th,r]=meshgrid((0:5:360)*pi/180,0:.05:1); %在极坐标系下设置一个73×21的网格矩阵,即圆周方向分为73份,半径方向分为21份,总共分了1533个点,节点越多,图形越精确% [X,Y]=pol2cart(th,r); %转化为笛卡儿坐标系% Z=X+i.*Y;

实验一 MATLAB基本操作及运算(含实验报告).

实验一 MATLAB 基本操作及运算 一、 实验目的 1、 理解Matlab 数据对象的特点; 2、 掌握基本Matlab 运算规则; 3、 掌握Matlab 帮助的使用方法; 二、 实验的设备及条件 计算机一台(带有MATLAB7.0以上的软件环境)。 三、 实验内容 要求建立一个名为experiment01.m 的,把与实验内容1-7相关的实验命令都放入该文件中,题与题之间用相应注释分割。注意对实验中出现的相关函数或变量,请使用help 或doc 查询相关帮助文档,学习函数的用法。 1、 建立以下标量: 1) a=10 2) b=2.5×1023 3) c=2+3i ,(i 为虚数单位) 4) d=3/2πj e ,(j 为虚数单位,这里要用到exp ,pi ) 2、 建立以下向量: 1) aVec=[3.14 15 9 26] 2) bVec=????? ???????18228871.2 3) cVec=[5 4.8 … -4.8 -5 ] (向量中的数值从5到-5,步长为-0.2) 4) dVec=[100 100.01 … 100.99 101] (产生1到10之间的等对数间隔向量,参考logspace ,注意向量的长度) 3、 建立以下矩阵: 1)???? ??????=2222 aMat aMat 一个9×9的矩阵,其元素全为2;(参考ones 或zeros )

2)??????? ?????????=1000005000001 bMat bMat 是一个9×9的矩阵,除主对角上的元素为[1 2 3 4 5 4 3 2 1]外,其余元素均为0。(参考diag )。 3)100 20109212291111 =cMat cMat 为一个10×10的矩阵,可有1:100的向量来产生(参考reshape ) 4)???? ??????=NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN dMat dMat 为3×4的NaN 矩阵,(参考nan ) 5)?? ????---=8710225113eMat 6)产生一个5×3随机整数矩阵fMat ,其值的范围在-3到3之间。(参考rand 和floor 或ceil ) 4、 使用题1中的变量计算下列等式的x,y,z 的值: 1) ) 6/)15((11--+=a e x 2) g g h h b a y /121,)(=+=提示π,参考sqrt 。 3) c c a d c d c R z ))3/sin()]))([(log(π-+= ,其中R 表示取括号内复数的实数部分,c 表示c 的共轭复数,log 是自然对数。(参考real ,conj ,log ) 5、 使用题2中的向量求解一下等式: 1))25.2/(22 25.221 cVec e xVec -=π, 其中cVec 指的是题2 中定义的向量cVec ,一下雷同。 2)22)(bVec aVec yVec T +=,T aVec 表示aVec 的转置 3) )/1(log 10dVec zVec =,10log 表示已10为底的对数,参考log10 6、 使用题2和题3中所产生的向量和矩阵计算以下等式,注意本题的操作

导入包含数据的txt文件到MATLAB中

导入包含数据的txt文件到MATLAB中,并绘制图像 (2013-08-07 17:14:49) 转载▼ 标签: matlab 这回把步骤写得详详细细的,再不会忘记了吧,哇呀呀哎呀 第一步:先把txt文件复制到MATLAB的目录,或者在MATLAB中将路径指向txt文件所在路径。 第二步:右键存有数据的txt文件,选择Import Data... 第三步:Import Data之后就能看到txt里的数据被妥善安放好位置了,然后在Range右边的列表中选择Matrix,再点击绿色的对勾√导入数据:

第四步:导入完数据后,在workplace里能看到名为txt文件名的数组变量,就说明导入成功,这里是a:

第五步:最后就是编写语句了:plot(a(:,2),a(:,3),'o'),回车就会出现以o为点的散点图,如果是:plot(a(:,2),a(:,3),'*'),就得到以*为点的散点图;

绘图说明(本节来自互联网资源): 1.将数据表的各列数值分别赋予变量x、y、z等,格式如下:x=sheetname(:,1), y=sheetname(:,2), z=sheetname(:,3); 2.用命令plot(x,y,’XXXX’)绘制图形,单引号中的符号表示点线的属性,如线形、颜色、点的形状等,若用双对数坐标画图则命令为loglog(x,y); 3.在弹出的绘图界面中用菜单View—Property Editor编辑图形属性,如字体大小、数据点形状、横纵坐标名称、绘图区域颜色等; 4.绘图方法2:在数组编辑器上点击Plot Selection按钮,选择图形的类型即可; 5.绘图方法3:菜单File—New—Figure创建新的图形,在图形编辑器中Figure Palette面板点击2D Axes,点击右下角Add Data选择图表类型和坐标轴的数据源,度分布图将坐标轴由线形改为对数即可。 6.hold on/off命令:叠绘命令,切换绘图的保持功能; 7.绘制双纵轴: 7.1 plotyy(x1,y1,x2,y2):分别用左/右侧y轴表示两条曲线; 7.2 plotyy(x1,y1,x2,y2,FUN):FUN是字符串格式,用来指定绘图的函数名,可以由多个。

matlab操作实验报告

实验一matlab基本操作 一、实验目的 熟悉matlab的安装与启动;熟悉matlab用户界面;熟悉matlab功能、建模元素;熟悉matlab优化建模过程。 二、实验设备与工具 1.计算机 2.matlab软件 三、实验步骤 1. 了解matlab的硬件和软件必备环境; 2. 启动matlab; 3. 学习优化建模过程。 四、实验报告要求 1. 写出matlab系统界面的各个构成;以及系统布局区的组成;以及每一部 分的功能; 2. 优化建模过程应用举例 五、实验内容 (一)、Matlab操作界面 1.命令窗口(command window) 2.命令历史窗口(command history) 3.工作空间管理窗口(workspace) 4.当前路径窗口(current directory) (二)、优化建模过程应用举例 1、简单矩阵 123 456 789 A ?? ?? =?? ?? ?? 的输入步骤。 (1)在键盘上输入下列内容 A = [1,1,3; 4,5,6; 7,8,9] (2)按【Enter】键,指令被执行。 (3)在指令执行后,MATLAB指令窗中将显示以下结果: A = 1 2 3 4 5 6 7 8 9

2、矩阵的分行输入。 A=[1,2,3 4,5,6 7,8,9] A = 1 2 3 4 5 6 7 8 9 3、指令的续行输入 S=1-1/2+1/3-1/4+ ... 1/5-1/6+1/7-1/8 S = 0.6345 4、画出衰减振荡曲线t e y t 3sin 3-=及其它的包络线3 0t e y -=。t 的取值范围是]4,0[π。 t=0:pi/50:4*pi; y0=exp(-t/3); y=exp(-t/3).*sin(3*t); plot(t,y,'-r',t,y0,':b',t,-y0,':b') grid 5、画出2222) sin(y x y x z ++=所表示的三维曲面。y x ,的取值范围是]8,8[-。 clear;x=-8:0.5:8; y=x';

(完整版)Matlab实验7图形绘制

实验7:图形绘制 一、实验目的 1、 掌握绘制二维图形的常用函数。 2、 掌握绘制三维图形的常用函数。 3、 掌握绘制图形的辅助操作。 二、实验内容 1、 已知2*13),2cos(2,12 y y y x y x y ===,完成下列操作: (1) 在同一坐标系下用不同的颜色和线型绘制三条曲线。 %homework_7_1_1.m x=0:pi/100:2*pi; y1=x.*x; y2=cos(2*x); y3=y1.*y2; plot(x,y1,'r--',x,y2,'k:',x,y3,'b-.'); (2) 以子图形式绘制三条曲线。 %homework_7_1_2.m x=0:pi/100:2*pi; y1=x.*x; y2=cos(2*x); y3=y1.*y2; subplot(2, 2, 1); plot(x,y1,'r--'); subplot(2, 2, 2); plot(x,y2,'k:'); subplot(2, 2, 3); plot(x,y3,'b-.'); (3) 分别用条形图、阶梯图、杆图和填充图绘制三条曲线。 %homework_7_1_3.m %ì?D?í??¢?×ìYí??¢??í?oíì?3?í? x=0:pi/100:2*pi; y1=x.*x; y2=cos(2*x); y3=y1.*y2; %μúò?DD subplot(4, 3, 1); bar(x,y1,'r'); subplot(4, 3, 2); bar(x,y2,'k'); subplot(4, 3, 3); bar(x,y3,'b'); %μú?tDD

stairs(x,y1,'r'); subplot(4, 3, 5); stairs(x,y2,'k'); subplot(4, 3, 6); stairs(x,y3,'b'); %μúèyDD subplot(4, 3, 7); stem(x,y1,'r'); subplot(4, 3, 8); stem(x,y2,'k'); subplot(4, 3, 9); stem(x,y3,'b'); %μú??DD subplot(4, 3, 10); fill(x,y1,'r'); subplot(4, 3, 11); fill(x,y2,'k'); subplot(4, 3, 12); fill(x,y3,'b'); 2、 绘制极坐标曲线)sin(θρn b a +=,并分析参数a ,b ,n 对曲线形状的影响。 %homework_7_2.m function homework_7_2(a,b,n) theta=0:0.01:2*pi; rho=a.*sin(b+n.*theta); polar(theta,rho,'k'); %homework_7_2_tiao.m % a μ?ó°?ì subplot(3, 4, 1); homework_7_2(1,1,1) subplot(3, 4, 2); homework_7_2(2,1,1) subplot(3, 4, 3); homework_7_2(3,1,1) subplot(3, 4, 4); homework_7_2(4,1,1) % b μ?ó°?ì subplot(3, 4, 1); homework_7_2(1,1,1) subplot(3, 4, 2); homework_7_2(1,2,1) subplot(3, 4, 3); homework_7_2(1,3,1)

Matlab的各种数据读取、文件读写等操作汇总

Matlab 的各种数据读取、文件读写等操作汇总 MATLAB 提供了多种方式从磁盘读入文件或将数据输入到工作空间,即读取数据,又叫导入数据;将工作空间的变量存储到磁盘文件中称为存写数据,又叫导出数据。至于选择哪种机制,则根据下面两个因素决定:?用户所执行的 操作是导入数据还是导出数据;?数据的格式为文本格式、 二进制格式还是如HDF 之类的标准格式。将数据导入MATLAB 中最容易的方法就是使用导入数据模板(Import Wizard) ,使用该模板时不需要知道数据的格式,只需指定包含这些数据的文件,然后导入模板会自动处理文件内容。本章重点内容如下:? 文件的打开和关闭? 文本文件的读取?存写ASCII数据?二进制数据的读取? 二进制数据的存写? 使用I/O文件函数进行数据读写?MAT 文件的读写 2.1 文件的打开和关闭2.1.1 文件的打开无论是要读写ASCII 码文件还是二进制文件,都必须先用fopen 函数将其打开,在默认情况下,fopen 以二进制格式打开文件,它的使用语法如下:fopen ('filename', 'mode') 其中filename 表示要读写的文件名称,mode 则表示要对文件进行的处理方式,如下:rt :以只读方式(Reading)打开文件wt:以只写方式(Writing)打开文件at:以追加方式(Appending)打开文件,新内容将从原文件后面续写r+t:以同时读写方式打开文件w+t :以同时读写创建文件,原文件内容被清除

a+t :以同时读和追加(Reading and Appdending) 方式,原文件内容被保留,新内容将从原文件的后面开始At :以读写方式打开或创建文件,适用于对磁带介质文件的操作Wt :以写入方式打 开或创建文件,原文件内容被清除,适用于磁带介质文件的操作fopen 函数有两个返回值,一个是返回一个文件标志(file Identifier) ,它会作为参数被传入其他对文件进行读写操作的命令,通常是一个非负的整数,可用此标识来对此文件进行各种处理。如果返回的文件标识是-1,则代表fopen无法打开文件,其原因可能是文件不存在,或是用户无法打开此文件权限。另一个返回值就是message ,用于返回无法打开文件的原因。为了安全起见,最好在每次使用fopen 函数时,都测试其返回值是否为有效值。下面以脚本m 文件为例来声明文件的打开。例 2-1 %exam1.m[f,message]=fopen('fileexam1', 'r')if f==-1disp (message); % 显示错误信息end 若文件fileexam1 不存在,则显示如下信息。Cannot open file.existence?permissions?memory?... 例2-2 %exam2.m[f,message]=fopen('fileexam2', 'r');if f==-1disp (message); % 显示错误信息else disp(f);end 若文件fileexam2 存在,则返回f值。 2.1.2 文件的关闭一旦完成文件的读写,最好关闭文件,以便对其进行其他操作。这时就可以使用fclose 函数来关闭文件,其适用语法如下:fclose(f) 。其中 f 为打开文件的标志,若fclose 函数返回值为0 ,则表示成功关闭 f 标志的文件;若返回值为-1,

MATLAB基本操作实验报告

MATLAB基本操作 实验报告 课程名称: 院系: 专业班级: 学号: 学生姓名: 指导教师: 开课时间:至学年第学期

一、学生撰写要求 按照实验课程培养方案的要求,每门实验课程中的每一个实验项目完成后,每位参加实验的学生均须在实验教师规定的时间内独立完成一份实验报告,不得抄袭,不得缺交。 学生撰写实验报告时应严格按照本实验报告规定的内容和要求填写。字迹工整,文字简练,数据齐全,图表规范,计算正确,分析充分、具体、定量。 二、教师评阅与装订要求 1.实验报告批改要深入细致,批改过程中要发现和纠正学生实验报告中的问题,给出评语和实验报告成绩,签名并注明批改日期。实验报告批改完成后,应采用适当的形式将学生实验报告中存在的问题及时反馈给学生。 2.实验报告成绩用百分制评定,并给出成绩评定的依据或评分标准(附于实验报告成绩登记表后)。对迟交实验报告的学生要酌情扣分,对缺交和抄袭实验报告的学生应及时批评教育,并对该次实验报告的分数以零分处理。对单独设课的实验课程,如学生抄袭或缺交实验报告达该课程全学期实验报告总次数三分之一以上,不得同意其参加本课程的考核。 3.各实验项目的实验报告成绩登记在实验报告成绩登记表中。本学期实验项目全部完成后,给定实验报告综合成绩。 4.实验报告综合成绩应按课程教学大纲规定比例(一般为10-15%)计入实验课总评成绩;实验总评成绩原则上应包括考勤、实验报告、考核(操作、理论)等多方面成绩; 5.实验教师每学期负责对拟存档的学生实验报告按课程、学生收齐并装订,按如下顺序装订成册:实验报告封面、实验报告成绩登记表、实验报告成绩评定依据、实验报告(按教学进度表规定的实验项目顺序排序)。装订时统一靠左侧按“两钉三等分”原则装订。

MATLAB实验七

实验七、MATLAB的绘图操作(一) 1、>> x=0:0.1:10;y1=x.^2;y2=cos(2*x);y3=y1.*y2; 在同一坐标下用不同的颜色和线型绘制三条曲线 >> plot(x,y1,':'),hold on,plot(x,y2,'b'),hold on,plot(y3,'g') 以子图形式绘制3条曲线 >> subplot(2,2,1),plot(x,y1),subplot(2,2,2),plot(x,y2),subplot(2,2,3),plot(y3) 分别以条形图阶梯图直方图和填充图绘制曲线 条形 图:>>subplot(2,2,1),bar(x,y1),subplot(2,2,2),bar(x,y2),subplot(2,2,3),bar(y3)

阶梯图: >> subplot(2,2,1),stairs(x,y1),subplot(2,2,2),stairs(x,y2),subplot(2,2,3),stairs(y3) 填充图: >> subplot(2,2,1),fill(x,y1,'r'),subplot(2,2,2),fill(x,y2,'r'),subplot(2,2,3),fill(x,y3,'r') 2、绘制极坐标曲线p=a*sin(b+nθ) >> a=2;b=4;n=3;th=0:0.01:pi;polar(th,a*sin(b+n*th)) 3、绘制函数的曲面图 (1、)>> [x,y]=meshgrid(-1:0.01:1,-1:0.01:1);z=(x.^2-2*x).*exp(-x.^2-y.^2-x.*y);plot3(x,y,z,'y')

实验5 Matlab绘图操作实验报告

Tutorial 5 实验报告 实验名称:Matlab 绘图操作 实验目的: 1、 掌握绘制二维图形的常用函数; 2、 掌握绘制三维图形的常用函数; 3、 掌握绘制图形的辅助操作。 实验内容: 1. 设sin .cos x y x x ?? =+ ??+?? 23051,在x=0~2π区间取101点,绘制函数的曲线。 2. 已知: y x =21,cos()y x =22,y y y =?312,完成下列操作: (1) 在同一坐标系下用不同的颜色和线性绘制三条曲线; (2) 以子图形式绘制三条曲线; (3) 分别用条形图、阶梯图、杆图和填充图绘制三条曲线。 3. 已知:ln(x y x x ≤=??+>??0102 ,在x -≤≤55区间绘制函数曲线。 4. 绘制极坐标曲线sin()a b n ρθ=+,并分析参数a 、b 、n 对曲线形状的影响。 5.在xy 平面内选择区域[][],,-?-8888, 绘制函数z =的三种三维曲面图。 6. 用plot 函数绘制下面分段函数的曲线。 ,(),,x x f x x x x ?+>? ==??+

8. 在同一坐标轴中绘制下列两条曲线。 (1).y x =-205 (2)sin()cos ,sin()sin x t t t y t t π=?≤≤? =?303 实验结果: 1. 2. (1)

(2)

(3)

Matlab数据文件的读写

Matlab数据文件的读写 在编写一个程序时,经常需要从外部读入数据,或者将程序运行的结果保存为文件。MATLAB使用多种格式打开和保存数据。本章将要介绍MATLAB中文件的读写和数据的导入导出。 了解MATLAB的基本数据操作 掌握MATLAB中文本文件的读写方式 掌握MATLAB通过界面导入导出数据 了解MATLAB中的基本输入输出函数 13.1 数据基本操作 本节介绍基本的数据操作,包括工作区的保存、导入和文件打开。 13.1.1 文件的存储 MATLAB支持工作区的保存。用户可以将工作区或工作区中的变量以文件的形式保存,以备在需要时再次导入。保存工作区可以通过菜单进行,也可以通过命令窗口进行。 1. 保存整个工作区 选择File菜单中的Save Workspace As…命令,或者单击工作区浏览器工具栏中的Save,可以将工作区中的变量保存为MAT文件。 2. 保存工作区中的变量 在工作区浏览器中,右击需要保存的变量名,选择Save

As…,将该变量保存为MAT文件。 3. 利用save命令保存 该命令可以保存工作区,或工作区中任何指定文件。该命令的调用格式如下: ● save:将工作区中的所有变量保存在当前工作区中的文件中,文件名为matlab.mat,MAT文件可以通过load函数再次导入工作区,MAT函数可以被不同的机器导入,甚至可以通过其他的程序调用。 ● save('filename'):将工作区中的所有变量保存为文件,文件名由filename指定。如果filename中包含路径,则将文件保存在相应目录下,否则默认路径为当前路径。 ● save('filename', 'var1', 'var2', ...):保存指定的变量在filename 指定的文件中。 ● save('filename', '-struct', 's'):保存结构体s中全部域作为单独的变量。 ● save('filename', '-struct', 's', 'f1', 'f2', ...):保存结构体s中的指定变量。 ● save('-regexp', expr1, expr2, ...):通过正则表达式指定待保存的变量需满足的条件。 ● save('..., 'format'),指定保存文件的格式,格式可以为MAT 文件、ASCII文件等。 13.1.2 数据导入

matlab实验报告

实验报告 2. The Branching statements 一、实验目的: 1.To grasp the use of the branching statements; 2.To grasp the top-down program design technique. 二、实验内容及要求: 1.实验内容: 1).编写 MATLAB 语句计算 y(t)的值 (Write the MATLAB program required to calculate y(t) from the equation) ???<+≥+-=0 530 53)(2 2t t t t t y 已知 t 从-5到 5 每隔0.5取一次值。运用循环和选择语句进行计算。 (for values of t between -5 and 5 in steps of 0.5. Use loops and branches to perform this calculation.) 2).用向量算法解决练习 1, 比较这两个方案的耗时。 (tic ,toc 的命令可以帮助你完成的时间计算,请使用'help'函数)。 Rewrite the program 1 using vectorization and compare the consuming time of these two programs. (tic, toc commands can help you to finish the time calculation, please use the …help ? function). 2.实验要求: 在报告中要体现top-down design technique, 对于 3 要写出完整的设计过程。 三、设计思路: 1.用循环和选择语句进行计算: 1).定义自变量t :t=-5:0.5:5; 2).用循环语句实现对自变量的遍历。 3).用选择语句实现对自变量的判断,选择。 4).将选择语句置入循环语句中,则实现在遍历中对数据的选择,从而实现程序的功能。 2. 用向量法实现: 1).定义自变量t :t=-5:0.5:5; 2).用 b=t>=0 语句,将t>=0得数据选择出,再通过向量运算y(b)=-3*t(b).^2 + 5; 得出结果。 3).用取反运算,选择出剩下的数据,在进行向量运算,得出结果。 四、实验程序和结果 1.实验程序 实验程序:创建m 文件:y_t.m

excel中的数据导入matlab中

用Excel Link实现Excel与Matlab混合编程 Excel Link是一个在Windows环境下实现Excel与Matlab进行链接的插件。通过连接Excel 和Matlab,用户可以在Excel工作表空间和宏编程工具中使用Matlab的数值计算,图形处理等功能,不需要脱离Excel环境。同时由Excel Link来保证两个工作环境中的数据交换和同步更新。 1. Excel Link的安装和和设置首先,在系统中安装Excel软件。然后安装Matlab和Excel Link,用Matlab安装盘开始安装,选择自定义安装中,在选中组件ExcelLink,如下图所示:安装完Excel Link后还需要在Excel中进行一些设置后才能使用。启动Excel,选择菜单“工具”项下的“加载宏”项,弹出如下对话框:选中Excel Link项。如果该项不存在,则通过浏览目录,在目录%MATLAB%toolboxexlink下找到excllink.xla文件,如下图示,并确定。选中ExcelLink项并确定后,在Excel中多了一个Excel Link工具条,如下图示: 经过以上的设置后就可以开始使用Excel Link了。 2. ExcelLink连接管理函数 (1) Matlabinit 该函数只能在宏子例程中使用。初始化ExcelLink和启动Matlab进程。只有在MLAutoStart 函数中使用“no”参数,才需要手动使用Matlabinit来初始化ExcelLink和启动Matlab进程,如果使用参数“yes”,则Matlabinit是自动执行的。 使用语法:Matlabinit (2) MLAutoStart 设置自动启动Matlab和ExcelLink。 在工作表中的使用语法: MLAutoStart("yes") MLAutoStart("no") 在宏中的使用语法: MLAutoStart "yes" MLAutoStart "no" 使用“yes”参数,则当Excel启动时,自动启动Matlab和ExcelLink;如果使用参数“no”,则当Excel启动时,不启动Matlab和ExcelLink。如果在此之前它们已经启动,则无任何影响。 (3) MLClose 终止Matlab进程并删除Matlab工作空间的所有变量。并通知Excel,Matlab不再运行。 在工作表中的使用语法: MLClose() 在宏中的使用语法: MLClose (4) MLOpen 启动Matlab进程。如果Matlab进程已经启动,则MLOpen函数不进行任何操作。在使用MLClose关闭Matlab进程后使用MLOpen来重新启动Matlab。 在工作表中的使用语法: MLOpen() 在宏中的使用语法: MLOpen

MATLAB实验报告1(推荐文档)

学生实验报告

一、实验目的 熟悉MATLAB 软件的用户环境;了解MATLAB 软件的一般命令;掌握MATLAB 向量、数组、矩阵操作与运算函数;掌握MATLAB 软件的基本绘图命令;掌握MATLAB 语言的几种循环、条件和开关选择结构,及其编程规范。 通过该实验的学习,使学生能灵活应用MATLAB 软件解决一些简单问题,能借助MATLAB 软件的绘图功能,对函数的特性进行探讨,广泛联想,大胆猜想,发现进而证实其中的规律。 二、实验仪器、设备或软件: 电脑,MATLAB 软件 三、实验内容 1.MATLAB 软件的数组操作及运算练习; 2.直接使用MATLAB 软件进行作图练习; 3.用MATLAB 语言编写命令M 文件和函数M 文件。 四、实验步骤 1.在D 盘建立一个自己的文件夹; 2.开启软件平台——MATLAB ,将你建立的文件夹加入到MATLAB 的搜索路径中; 3.利用帮助了解函数max, min, sum, mean, sort, length ,rand, size 和diag 的功能和用法; 4.开启MATLAB 编辑窗口,键入你编写的M 文件(命令文件或函数文件); 5.保存文件(注意将文件存入你自己的文件夹)并运行; 6.若出现错误,修改、运行直到输出正确结果; 7.写出实验报告,并浅谈学习心得体会。 五、实验要求与任务 根据实验内容和步骤,完成以下具体实验,要求写出实验报告(实验目的→问题→算法与编程→计算结果或图形→心得体会) 1. 已知矩阵??????????=321212113A , ???? ? ?????--=101012111B 要求:(1)屏幕输出A 与B ;(2)A 的转置A′;(3)求A+B 的值;(4)求A-B 的值;(5)求4A ;(6)求A×B ;(7)求A -1.

Matlab程序设计实验报告

实验七Matlab 程序设计 实验目的: 1、掌握建立和执行M 文件的方法; 2、掌握实现选择结构的方法; 3、掌握实现循环结构的方法。 实验内容: 1. 编写用 5 次多项式拟合函数y=sin(x), x [0, 2 ]的脚本M 文件,要求绘图观察拟合的效果。 function shiyan1 x=0:0.5:2*pi y=sin(x) p=polyfit(x,y,5) x1=0:0.2:2*pi y1=polyval(p,x1) plot(x,y, 'b' ,x1,y1, '*r' x =

Columns 1 through 9 0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000 Columns 10 through 13 4.5000 5.0000 5.5000 6.0000 y = Columns 1 through 9 0 0.4794 0.8415 0.9975 0.9093 0.5985 0.1411 -0.3508 -0.7568 Columns 10 through 13 -0.9775 -0.9589 -0.7055 -0.2794 p = -0.0056 0.0881 -0.3967 0.2671 0.8902 0.0029 x1 = Columns 1 through 10 0 0.2000 0.4000 0.6000 0.8000 1.0000 1.2000 1.4000 1.6000 1.8000 Columns 11 through 20

2. 2.2000 2.4000 2.6000 2.8000 3.0000 3.2000 3.4000 3.6000 1.8001 Columns 21 through 30 4.0 4.2000 4.4000 4.6000 4.8000 5.0000 5.2000 5.4000 5.6000 5.8000 Columns 31 through 32 6.0 6.2000 y1 = Columns 1 through 10 0.29 0.1886 0.3786 0.5585 0.7172 0.8461 0.9391 0.9926 1.0048 0.9761 Columns 11 through 20 0.9083 0.8048 0.6701 0.5098 0.3301 0.1381 -0.0590 -0.2538 -0.4389 -0.6073 Columns 21 through 30 -0.7524 -0.8685 -0.9505 -0.9949 -0.9991 -0.9626 -0.8863 -0.7732 -0.6288 -0.4606 Columns 31 through 32

Matlab上机实验报告

20140110170124 14级测绘工程1班齐新煜 Matlab基础运用实验报告(一) MATLAB在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。 MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。 软件安装 1.安装出错时,可换注册码继续安装,到同一目录; 2.【谨记】安装路径不要有中文名称; 3.成功安装完毕之后,如果遇到matlab启动后,窗口在打开一到两秒后就自动关闭了,可按以下方法试试:【假设你安装的目录为c:\MATLAB\】(不过不建议安装到C盘,那样会影响系统速度!) 4.确认安装好后,在此路径下c:\MATLAB\bin\win32有一个名为atlas_Athlon.dll的文件;

5.我的电脑上右击点"属性",再在"高级"中点"环境变量",在"系统变量"中点击 "新建" 输入以下信息:变量名:BLAS_VERSION 变量址: c:\MATLAB\bin\win32\atlas_Athlon.dll 6.安装MATLAB成功! 实验结语 MATLAB在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。 MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。 Matlab基础运用实验报告(二) 一、实验目的 1.了解MATLAB程序设计语言的基本特点,熟悉MATLAB软件的运行环境;

相关主题