【MOOC】数学实验 - 电子科技大学-第2讲

MATLAB程序设计基础I

写在前面:笔者对matlab的基础使用还是有一定“功底”的,所以这里只记录一些较为关键的点。

2.1基本语法

2.1.1语法基础

赋值语句
基本语法:变量名=表达式

示例:
a=[2 5 6 7 9];
a(2)=10

其他赋值语句, 如:

变量名=函数名(输入参数列表)

[变量名列表]=函数名(输入参数列表)

示例:
[V1,V2,V3]=myfun(M1,M2)

常用命令、快捷键
 clear 清除工作空间中的变量
 clear 变量名列表
 示例: clear A B 清除变量A, B
 clc 清除命令窗口内容
 who 列出当前工作空间所有变量名称
 whos 列出当前工作空间变量更多信息( 维数, 占用内存字节数等)
 whos 变量名列表
 示例: whos v1 v2 列出变量v1, v2的更多信息
 快捷键: 向上方向键、 向下方向键,用于浏览命令窗口历史命令、 语句

2.1.2数组创建与应用

end在存取数组元素方面的特殊用法
 用法: end在下标表达式中表示最后一个下标值
 如果end出现在一个向量的下标中,则表示向量的元素个数
 如果end出现在一个矩阵的行下标位置,则表示矩阵的行数
 如果end出现在一个矩阵的列下标位置,则表示矩阵的列数

 示例:
x=[1 5 9; 2 6 10; 3 7 11; 4 8 12];
x(end,2)= 0; x%将矩阵x的最后一行第2列元素赋值为0

运行结果:
x =1 5 9
2 6 10
3 7 11
4 0 12

 其他例子:

– 操作向量示例
t = rand(1,10);
x1 = t(1:end-1) %取第1个-倒数第2个
x2 = t(end-2:end) %取倒数第3个-倒数第1个

– 操作矩阵示例
A = rand(3)
B = A(1:end-1, : ) %取A的第1行-倒数第2行
C = A(:, [2:end]) %取A的第2列-倒数第1列

2.1.3MATLAB运算符

矩阵操作运算符
矩阵左除: A\B, 当A为方阵表示: A-1B
矩阵右除: A/B, 当B为方阵表示 AB-1,或B为标量
矩阵幂: A^n, A为方阵

数组对应元素操作运算符 .* ./ .\ .^
 数组对应元素计算:
 数组相乘: C=A.*B
 数组右除: C=A./B;
 数组左除: C=A.\B
 数组幂: C=A.^B
 要求: A, B同维数或其中之一为标量

示例:
 A=rand(3,4);
 B=rand(3,4);
 A.*B, A./B, A.\B, A.^B
 T1=A.*2; %以A的每个元素与2相乘构造数组
 T2=A.^2; % 以A的每个元素2次方构造数组
 T3=2./A ; % 以A的每个元素的倒数乘以2构造数组
 T4=2.\A ; % 以2的倒数乘以A的每个元素构造数组

标量之间的运算符
 3/6 % 3除以6,表达式的值为0.5
 3\6 % 3的倒数乘以6,表达式的值为2

2.1.4数据类型

主要的数据类型包括: double char sym struct cell
实例:

>> a=rand(3); b='Li San';%a为double型, b为char型
>>  syms x, y=1 + x^2 %x,y为sym类型;对y赋值的语句含符号对象
>>  F.name='li San', F.birth=1999, F.src=rand(3)%F为struct型
>>  whos a b x y F
 Name Size Bytes Class   Attributes
F       1x1     620     struct
a       3x3     72   double
b           1x6     12  char
x           1x1     112  sym
y           1x1     112     sym

查看变量类型
使用函数class
用法: class(变量名)
该函数返回变量的数组类型的char型数组,如’double’, ‘char’。

示例:
a=rand(3); b=’abc’
class(a), class(b)
运行结果:
ans = double
ans = char

cell数组基本用法
 创建数组用法:
a=cell(m,n)

 存取cell数组用法示例:
a{i} i为下标
a{i,j} i,j分别为行、列下标

特点: 一个cell数组中的元素的类型可以互不相同

运行示例:

>> a=cell(2,3)
a =
[] [] []
[] [] []
>> a{1,1}='abc';a{1,2}=rand(3);a{1,3}=cell(1,2);
>> a
a =
'abc' [3x3 double] {1x2 cell}
[] [] []

2.1.5基本输入与格式化输出操作函数

基本输入与格式化输出操作函数
 三个函数:
 input 输入函数
 disp 显示数组内容函数
 sprintf 将数组内容格式化为字符串

示例:

>>g=input('输入您的成绩: ')
>> 输入您的成绩: 95
 g = 95

数组显示函数disp
 特点: 显示数组内容,但不输出变量名– 多用于调试程序时显示数组内容
 示例:

>>a=rand(1,3);
>>a
  a =
      0.6441 0.6872 0.7481
>>disp(a)
 0.6441 0.6872 0.7481

格式化输出函数sprintf
 功能: 将数据格式化输出为字符串
 用法: str = sprintf(formatSpec,A1,A2,…,An)
 将数组A1,A2,…,An按照参数formatSpec格式化为字符串赋给str.
 %d 格式化整数 %f 格式化浮点数
 %c 格式化单个字符 %s 格式化字符数组
 百分号符号字符后可以加个整数, 用以限定输出化为字符串的长度,
例如: %5d, %5s。

 示例:

a = [pi, sqrt(2)]; name='Li San'; grade=[86 95 89];
s1= sprintf('%0.5f',pi) %将该实数化为5个小数位字符串
s2= sprintf('%10.6f', a) %将a化为10个字符长,含6个小数位的字符串
s3=sprintf('%8s%3d%3d%3d',name,grade)

运行结果:

s1 = 3.141593
s2 = 3.141593 1.414214
s3 = Li San 86 95 89

2.2常用函数

一、求和函数sum
用法:
 s=sum(v) 求向量v中元素的和
 s=sum(A,1) 或s=sum(A) 求矩阵A中每列的和,返回成1个行向量
 s=sum(A,2) 求矩阵A中每行的和,返回成1个列向量

示例:

>>a= fix(1000*rand(3,5))/1000;
>>s=sum(a), s2=sum(a,1) % s, s2完全相同
s = 
    1.00700 0.34800 2.46700 0.87400 1.97500
s2 = 
    1.00700 0.34800 2.46700 0.87400 1.97500
>>t =sum(a’,1)
t = 
    1.8430 2.2620 2.5660
>>t2= sum(a,2) % t,t2元素值相同,差别是什么?
t2 =
    1.8430
    2.2620
    2.5660

二、求平均值mean
用法:
 s=mean(v) 求向量v中元素的平均值
 s=mean(A,1) 或s=mean(A) 求矩阵A中每列的平均值,返回成1个行向量
 s=mean(A,2) 求矩阵A中每行的平均值,返回成1个列向量

示例:
>>X = [1 2 3; 3 3 6; 4 6 8; 4 7 7]
X = 
    1 2 3
>>v1=mean(X,1)
v1=
    3 3 6
    4 6 8
    4 7 7
>>v2=mean(X,2)
v2 =
    2 4 6 6

三、求最大值max,求最小值min
用法:
[v, I]=max(x)
 如果x为向量, v为向量中的最大元素; I为最大元素在x中的下标。
 如果x为矩阵, v为每列的最大元素组成的行向量, I则为每列最大元
素的行下标组成的向量。

[v, I]=min(x)
 如果x为向量, v为向量中的最小元素; I为最小元素在x中的下标。
 如果x为矩阵, v为每列的最小元素组成的行向量, I则为每列最小元
素的行下标组成的向量。

运行示例:

>> x=[5 1 4 7 3]
x =
     5     1     4     7     3
>>  [v,I]=max(x)
v =
     7
I =
     4
>> [v,I]=min(x)
v =
     1
I =
     2

四、 length和size
length(x)
 如果x为向量,则返回x的元素个数;
 如果x为矩阵,则返回矩阵x行数和列数的最大值.

size(x)
 如果x为向量、矩阵,则返回行数、列数组成的行向量。

运行示例:

>> x=[3 2 4 5 1]
x =
     3     2     4     5     1
>> t1=length(x), t2=size(x)
t1 =
     5
t2 =
     1     5

五、排序函数sort
用法:
 [B, I]=sort(v) 对向量v中元素排序, B为按递增排序后的元素; I为排
序后数组B中的元素在原数组v中的位置下标.

运行示例:

>> a=[1 5 6 7 4 9]
v=sort(a)
[v2,idx2]=sort(a)%默认升序排序 同sort(a, ‘descend’) 
v_byidx = a(idx2)
a =
     1     5     6     7     4     9
v =
     1     4     5     6     7     9
v2 =
     1     4     5     6     7     9
idx2 =
     1     5     2     3     4     6
v_byidx =
     1     4     5     6     7     9

按降序排列:

>> a=[1 5 6 7 4 9]
v=sort(a, 'descend') %降序排列
a =
     1     5     6     7     4     9
v =
     9     7     6     5     4     1

六、查找函数find
用途:
 find函数用于查找数组中的非零元素位置、元素值.
 结合逻辑表达式可以返回所需要元素的位置下标

例1:

>> a=[1 5 6 7 4 9];
idx=find(a>=6)
idx =
     3     4     6

例2:
已知两个数组。 请找出数组x与y相同位置的元素值之差不超过2的元素对的个数。 例如: x =[1 9 0 7 8], y =[8 0 3 2 8]。

>> x =[1 9 0 7 8];
y =[8 0 3 2 8];
idx=find((x>=y-2) & (x<=y+2) )
s=length(idx)
%输出如下
idx =
     5
s =
     1

也可以使用sum函数:

>> s = sum((x>=y-2) & (x<=y+2) )
s =
     1

2.3控制语句

2.4函数编程

2.5应用实例

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值