MATLAB入门

1. 基础知识

数学运算符号及标点符号
在这里插入图片描述
(1)MATLAB的每条命令后,若为逗号或无标点符号,
则显示命令的结果;若命令后为分号,则禁止显示结果
(2)“%” 后面所有文字为注释
(3) “…”表示续行。

2. 变 量 与 函 数

2.1 变量

   MATLAB中变量的命名规则是:

1)变量名必须是不含空格的单个词;
2)变量名区分大小写;
3)变量名最多不超过19个字符;
4)变量名必须以字母打头,之后可以是
任意字母、数字或下划线,变量名中
不允许使用标点符号。

2. 2特殊变量表

在这里插入图片描述

2.3 M文件

1)MATLAB的应用程序文件。
2)函数文件。这类文件的第一行必须是一特殊字符function开始,格式为:
function 因变量名=函数名(自变量名)
函数值的获得必须通过具体的运算实现,并赋给因变量。

    M文件建立方法:1. 在MATLAB中,点:File→New → M-file
                            2. 在编辑窗口中输入程序内容
                            3. 点File → Save,存盘,M文件名必须 
                               与函数名一致

例:定义函数 f(x)=100(x-1)^2+2(2-x)
(1)建立M文件:fun.m

function   f=fun(x)   
f=100*(x-1)^2+2*(2-x)

(2)可以直接使用函数fun.m
例如:计算 f(1), 只需在MATLAB命令窗口键入命令:

 >>fun(1)

3. 数 组

3.1 创建简单的数组

x=[a b c d e f]创建包含指定元素的行向量。

x=first:last 创建从first开始,加1计数,到last结束的行向量

x=first:increment:last 创建从first开始,加increment计数,到last结束的行向量。

x=linspace(first,last,n) 创建从first开始,到last结束,有n个元素的行向量。

3.2 数组元素的访问

1)访问一个元素: x(i)表示访问数组x的第i个元素。
2)访问一块元素: x(a :b :c)表示访问数组x的第a个元素开始,以步长b到第c个元素(但不超过c),b可以为负数,b缺省时为1.
3)直接使用元素编址序号. x([a b c d]) 表示提取数组x的第a、b、c、d个元素构成一个新的数组
[x(a) x(b) x(c ) x(d)]

3.3 数组的方向

前面例子中的数组都是一行数列,是行方向分布的. 称之为行向量. 数组也可以是列向量,它的数组操作和运算与行向量是一样的,唯一的区别是结果以列形式显示.
产生列向量有两种方法:
直接产生 例 c=[1;2;3;4]
转置产生 例 b=[1 2 3 4]; c=b′
说明:以空格或逗号分隔的元素指定的是不同列的元素,而以分号分隔的元素指定了不同行的元素.

3.4 数组的运算

1) 标量-数组运算
数组对标量的加、减、乘、除和平方运算,是指数组的每个元素对该标量施加相应的加、减、乘、除、平方运算。

设:a=[a1,a2,…,an], c是标量。
则:a+c=[a1+c,a2+c,…,an+c]
a.c=[a1c,a2c,…,anc]
a./c= [a1/c,a2/c,…,an/c](右除)
a.\c= [c/a1,c/a2,…,c/an] (左除)
a.^c= [a1c,a2c,…,an^c]
c.^a= [ca1,ca2,…,c^an]
2)数组-数组运算
当两个数组有相同维数时,加、减、乘、除、幂运算可按元素对元素方式进行,不同大小或维数的数组是不能进行运算的。
设:a=[a1,a2,…,an], b=[b1,b2,…,bn]
则:a+b= [a1+b1,a2+b2,…,an+bn]
a.b= [a1b1,a2b2,…,anbn]
a./b= [a1/b1,a2/b2,…,an/bn]
a.\b=[b1/a1,b2/a2,…,bn/an]
a.^ b=[a1^ b1,a2^ b2,…,an^bn]

3.5 数组函数

length(z) % z的元素个数
max(z) % z的最大值
min(z) % z的最小值
sort(x): 对向量x的元素进行排序
norm(x): 向量x的欧氏(Euclidean)长度
sum(x): 向量x的元素总和
dot(x, y): 向量x和y的内 积
cross(x, y): 向量x和y的外积
(大部份的向量函数也可适用于矩阵)

4. 矩 阵

4.1 矩阵的建立

逗号或空格用于分隔某一行的元素,分号用于区分不同的行。除了分号,在输入矩阵时,按Enter键也表示开始新一行。输入矩阵时,严格要求所有行有相同的列.
例 m=[1 2 3 4 ;5 6 7 8;9 10 11 12]
p=[1 1 1 1
2 2 2 2
3 3 3 3]

  1. 特殊矩阵的建立:

a=[] 产生一个空矩阵,当对一项操作无结果时,返回空矩阵,空矩阵的大小为零
b=zeros(m,n) 产生一个m行n列的零矩阵
c=ones(m,n) 产生一个m行n列的元素全为1的矩阵
d=eye(m,n)
产生一个m行n列的单位矩阵

  1. 矩阵中元素的操作
    1)矩阵A的第r行:A(r,:)
    2)矩阵A的第r列:A(:,r)
    3)取矩阵A的第i1~ i2行、第j1~j2列:A(i1:i2, j1:j2)
    4)以逆序提取矩阵A的第i1~i2行: A(i2:-1:i1,:)
    5)删除A的第i1~i2行: A(i1:i2,:)=[]
    6)将矩阵A和B拼接成新矩阵:[A B];[A;B]

  2. 矩阵的运算
    1)标量-矩阵运算
    标量-数组运算相同.
    2)矩阵-矩阵运算
    矩阵加法:A+B
    矩阵乘法:AB
    矩阵点乘:A.B
    矩阵除法:右除 A/B=A
    B-1 左除A\B=A-1
    B
    矩阵点除:A./B
    方阵幂次:A^k

  3. 矩阵函数
    det(A) 方阵的行列式
    inv(A) 方阵的逆
    [V,D]=eig(A) 方阵的特征向量与特征值
    size(A) A的大小
    max(A) A的每列元素的最大值
    min(A) A的每列元素的最小值
    sort(A) 对A的每列进行排序
    sum(A) A的每列元素的总和
    find(A) A 中非零元素的位置

5. 关系与逻辑运算

5.1 关系操作符

5.2 逻辑运算符

在这里插入图片描述

6. MATLAB编程

MATLAB提供三种控制结构:
for循环、while循环、
if-else-end结构。

6.1 for循环

允许一组命令以固定的和预定的次数重复

  for  x=array
          {commands}
  end

在for和end语句之间的命令串{commands}按数组(array)中的每一列执行一次。在每一次迭代中,x被指定为数组的下一列,即在第n次循环中,x=array(:,n)

6.2 While循环

与for循环以固定次数求一组命令相反,while循环以不定的次数求一组语句的值。

  while  (expression)
             {commands} 	

  end

只要在表达式(expression)里的所有元素为真,就执行while和end语句之间的命令串{commands}.

6.3 if-else-end结构

1)有一个选择的一般形式是:

   if  (expression)
        {commands}
   end

如果在表达式(expression)里的所有元素为真,就执行if和end语句之间的命令串{commands}.

  1. 有三个或更多的选择的一般形式是:
    if (expression1)
    {commands1}
    elseif (expression2)
    {commands2}
    elseif (expression3)
    {commands3}
    elseif ……
    …………………………………
    else
    {commands}
    end

7. 实验作业

对以下问题,编写M文件:
(1) 有一个矩阵A, 编程求出其最大值及其所处的位置。
参考代码

>>A=[1 2 3 4 5 ;6 7 8 9 10;11 12 13 14 15 ;16 17 18 19 20];
>>b=max(max(A));
>>[c d]=find(A==b)

c = 

  1x1 double

   4


d = 

  1x1 double

   5

>>

(2) 编写函数Fi(n),计算斐波那契数列的第n项。
参考代码

function f=Fi(n)


f1=1;
f2=2;
if n==1||n==2
   f=f1;

end

while n>=3
	f=f1+f2;
	f1=f2;
	f2=f;
	n=n-1;


end

运行结果

>>Fi(3)

ans = 

  1x1 double

   3
>>

(3) 编程求在这里插入图片描述
参考代码

function f=he(n)
     n=20
	sum=0; 
     j = 1;
for i = 1:n
    j= j * i;
    sum = sum + j;
    i = i+1;
end
f = sum;
end

运行结果

>>he

n = 

  1x1 double

   20


ans = 

  1x1 double

  2.5613e+18
>>

(4)一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下. 求它在第10次落地时,共经过多少米?第10次反弹有多高?

参考代码

function [s,x]=xialuo(n)
	j=0;
	h=100;
	s=100;
	n=10;
for i=1:n	
	x=h/2^(i-1);
     s=s+x;
	i=i+1;
end
	x=x/2;
fprintf('十次落地时共经过 %f\n',s);
fprintf('第十次反弹 %f\n',x);	

运行结果

>>xialuo
十次落地时共经过 299.804688 米
第十次反弹 0.097656ans = 

  1x1 double

  299.8047
>>

(5)有一函数在这里插入图片描述
写一程序,输入自变量的值,输出函数值。
参考代码

function z= f(x,y)
	
	
z = x^2 + sin(x*y) + 2*y;

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值