Matlab基础知识(一)

目录:

1.显示输出数据

2.数组运算和矩阵运算

3.多维数组在内存中的存储

4.用关键字input 初始化变量

5.运算符的优先级问题

6.选择结构

7.循环结构

8.逻辑数组与向量化

9.自定义函数

 

 

 

1.显示输出数据

表1.输出显示格式

 

disp函数:它需要一个数组参数,它将该数组显示在命令窗口。下面的语句向命令窗口输出一个字符串。

str='This is a string!'; disp(str); 

用fprintf 函数格式化输出数据:

例如,下列语句计算复数x 的值,分别用fprintf 和disp 显示

 

x=2*(1-2*i)^3; str=['disp: x = ' num2str(x)]; disp(str); fprintf('fprintf: x = %8.4f/n',x); 

打印的结果如下:

disp: x = -22+4i fprintf: x = -22.0000 

 

 

2.数组运算和矩阵运算

表2. 常见的数组和矩阵运算

Matlab基础知识(一)_第1张图片

 

 

3.多维数组在内存中的存储

 

MATLAB 以列主导顺序分配数组中的元素。也就是说,内存先分配第一列的元素,然后第二列,第三列,……以此类推,直到所有列都被分配完。

 

例如,在一个2×2×2 数组中,它的元素在内存中的分配顺序是

(1,1,1),(2,1,1),(1,2,1),(2,2,1),(1,1,2),(2,1,2),(1,2,2),

(2,2,2)。

对于一个4*3的数组,a(5)和a(1,2)的值相同。

 

 

4.用关键字input 初始化变量

关键字 input 用来提示使用者和直接从键盘输入初始化变量.

in1=input('enter data:'); enter data:1.23 

把数值1.23 存储到in1 中.而语句

in2=input('enter data:','s') enter data:123 

把字符串1.23 存储到in2 中.

 

 

5.运算符的优先级问题

 

 

1.所有的数学运算按照前面描述的顺序的进行。

2.从左向右依次进行关系运算

3.执行所有~运算

4.从左向右依次进行&运算

5.从左向右依次进行|运算和数学运算 <script type="> plugins/syntaxhl/langs/zh.js" type="text/javascript"> 一样,括号能够改变括号的默认顺序。

6.选择结构

%if...elseif...else...end a=input('请输入第一个数'); b=input('请输入第二个数'); if a>b disp(1); elseif b>a disp(-1) else disp(0); end %switch语句 value=input('请输入一个简单的整数:'); switch (value) case {1, 3, 5, 7, 9}, disp('The value is odd.'); case {2, 4, 6, 8, 10}, disp('The value is even.'); otherwise, disp('The value is out of range.'); end %try...catch结构 try %能够发生错误的语句 catch %发生错误以后要输出的信息 end

 

 

7.循环结构

%while循环 x=10; while x>0 disp(x); x=x-1; end %for循环 %for循环比较耗时间,尽量用向量算法替代 tic %计时复位 for x=1:2:10 disp(x); end fprintf('运行时间:%f',toc); %输出运行时间

 

 

8.逻辑数组与向量化

 

matlab 有两个基本类型的数据类型:数字型与字符型。数字型数据包括数字,字符型数据包含字符。除这两个数据类型之外,还有第三类数据类:逻辑型。

 

“逻辑”数据类型在matlab 中并不真实存在。其实,它是带特定逻辑属性标准数字型数据类型。逻辑型数组通过所有的关系运算符和逻辑运算符创建。它们区别于数字型的是在调用whos 命令时,(logical)会出现在类型的后面。

例如,考虑下面的语句

a = [1 2 3; 4 5 6; 7 8 9]; b = a > 5; 

当调用whos 命令时,结果如下。

>> whos Name Size Bytes Class a 3x3 72 double array b 3x3 9 logical array Grand total is 18 elements using 81 bytes 

 

我们还可以用logical 函数给一个数组加上一个逻辑属性。例如,语句c=logical(a),将会把a 值赋于c,从而使c 带有一定的逻辑性。

一个数组的逻辑属性可以通任何的数学运算去除。例如,如果我们在c 数组加0,数组的值不会改变,而它的逻辑属性将会消失。

 

逻辑数组有一个重要的属性——它在算术运算中能提供一个屏蔽(mask)。屏蔽(mask)是指一个数组,它从另一个数组选择所需的元素参与运算。指定的运算只在选择的元素上执行,而不执行原有的元素。

>> a(b)=sqrt(a(b)) a = 1.0000 2.0000 3.0000 4.0000 5.0000 2.4495 2.6458 2.8284 3.0000 %对于一个数组的子集进行操作快速而简单,而不用循环和选择结构。 %例如计算一个二维数组中所有的大于5 的元素的平方根,然后其余的数的平方,用逻辑数组运算的代码如下: b = a > 5 a(b) = sqrt(a(b)); a(~b) = a(~b).^2; 

 

9.自定义函数

基本形式如下:

function [outarg1, outarg2, ...] = fname(inarg1, inarg2, ...) %H1 comment line %Other comment lines ... (Executable code) ... (return) 

 

function 语句标志着这个函数的开始。它指定了函数的名称和输入输出列表。输入函数列表显示在函数名后面的括号中。输出函数列表显示在等号左边的中括号中。(如果只有一个输出参数,中括号可以省略。)

 

输入参数列表是名字的列表,这些名字代表从调用者到函数的值。这些名字被称作形参。

 

在一个表达式中,调用一个函数需要用到实参列表。在命令窗口直接(或在脚本文件中,另一个函数中)键入函数的名字就可以调用这个函数了。当调用一个函数时,第一个实参的值用在第一个形参的位置,而且其余的形参和实参都一一对应。

函数的执行从函数的顶部开始,结束于return 语句或函数的终点。在输出参数列表中每一个项目都必须出现在function 语句中的左边。当函数返回时,存储于输出函数列表的值就会返回给调用者,用于下一步的运算。

 

在一个函数中的初始注释行有特定的目的。在function 语句的第一个行注释被称为H1注释行。它应当是对本函数功能的总结。这一行的重要性在于,通过lookfor 命令它能被搜索到并显示出来。从H1 注释行到第一个空行或第一个可执行性语句可以通过help 命令或帮助窗口搜索到。它们则应包含如何使用这个函数的简单总结。

 

下面是一个自定义函数的简单例子。函数dist2 用于计算笛卡尔坐标系中点(x1,y1)与点(x2,y2)之间的距离。

function maxInteger = maxInt(v1,v2) if v1>v2 maxInteger = v1; else maxInteger = v2; end 

下面是一个简单的利用上面的函数的例子:

>> x=maxInt(5,6) x = 6 

 

9.1全局变量

声明有全局变量的脚本文件或函数将有办法访问相同的值,所以全局变量为函数之间分享数据提供了一个方法。

 

 

全局变量的声明要用到global 主语句,基本形式如下

global var1 var2 var3 ...

 

其中var1,var2,var3 等等是用全局内存的变量。为了方便,全局变量将在函数开头被声明,但是实际上没有这个必要。

在一个程序,你能利用全局内存,在函数之间对大规模数据进行交换。

 

 

 

9.2持久变量

Matlab中就有了一个特殊的机制。这种机制允许多次调用一个函数时,保存本地变量。持久内存是内存的一种类型,在函数上一次调用之后,这一步调用之前,本地变量被保存在持久内存,值不变。

持久变量应用语句声明。它的形式如下:

persistent var1 var2 var3 ...

var1,var2,var3...是存储于持久内存中的变量。

 

 

9.3函数的函数

 

函数的函数是指函数的输入参数中含有其他的函数,传递给函数的函数的变量名一般情况应用于这个函数执行的过程中。

 

例如,MATLAB 中有一个函数的函数叫做fzero。这个函数用于找到传递给它的函数值为0 时的自变量。

>> fzero('cos',[0 pi]) ans = 1.5708 >> fzero('exp(x)-2',[0 1]) ans = 0.6931 

 

函数的函数操作的关键字有两个专门的maltab 函数,eval 和feval。。函数eval 对一个字符串进行求值,就如它在命令窗口中已经键入了一样。函数feval 用一个特定的输入值对命名的函数进行求值。

>> x = eval('sin(pi/4)') x = 0.7071 >> x = feval('sin',pi/4) x = 0.7071 

表9.函数的函数

Matlab基础知识(一)_第2张图片

9.4子函数和私有函数

 

在一个单个的文件中我们可以创建多个函数。如果超过 1 个的函数出现在一个文件中,那么最上面的那个函数为普通函数,下面的函数称为子函数或中间函数。子函数看起来和普通函数一样,但是只能被同一文件中的函数调用。

 

私有函数是指属于以private 为名字的子目录中的函数。这些函数只有在父目录中才是可见的。

 

在一个M 文件中,调用一个函数,MATLAB 先检查看他是否是一个子函数。如果它不是那就检查它是不是一个私有函数。如果也不是私有函数,MATLAB 就会检它在不在标搜索路径中。

 

用子函数或私有函数来隐藏特殊目的的函数,这些隐藏的函数只能被其他函数调用。隐藏这些函数防止了它们偶然的使用,也能防止与其他公共函数重名时发生的冲突。

你可能感兴趣的:(function,String,脚本,matlab,存储,input)