变量和数组

MATLAB程序的基本数据单元是数组,标量在MATLAB中也被当做数组来处理
数组可以定义为向量(一般描述为一维数组)或矩阵(一般描述为二维或多维)
访问数组中的元素:数组名+()
MATLAB变量名的命名:以字母开头,可跟字母、数字、下划线,只有前31个字符有效
区分字母的大小写

强类型语言

像C语言一样:

int a;
double b;

弱类型语言

像Matlab、Python一样:

c = 'l am a student'
% 不需要给变量设定一个变量类型
% 而只需通过复制形式创建类型,且变量类型取决于创建时的类型

变量的初始化

赋值语句初始化
在这里插入图片描述
input函数从键盘输入初始化变量
这是一个错误的写法
在这里插入图片描述
在这里插入图片描述
ans=0 说明输入的不是一个整形

从文件读取一个数据

赋值输入

一个数组的每行元素的个数必须完全相同,每一列元素的个数也必须完全相同
在这里插入图片描述
对数组中元素的访问,采用 数组名 (number)的形式,number是从1开始。

a1=[0,2,4];
b=[a1(2) a1];
b

b =

 2     0     2     4

定义数组的时候不是每个元素都要定义

c(2,3)=5

c =

 0     0     0
 0     0     5

指定数组中的一个元素赋值,其余默认为零
如果给一个数组赋值的元素超出了数组的大小的话,会新创一个数组(语文水平不高,还是matlab菜鸟,见谅,不懂看一下代码就晓得了)

d=[1,4]

d =

 1     4

d(3)=8

d =

 1     4     8

每个语句的末尾分号用来紧致变量值在命令窗口的重复

在这里插入图片描述

表达式赋值

matlab中的克隆运算符为:first:incr:last(起始位置,步长,终止位置)

x=1:2:10

x =

 1     3     5     7     9

类似于Python中的切片

 a = [1,2,3,4,5,6,7,8]
 for i in a[::-1]:
 	print(i)

结果为:8 7 6 5 4 3 2 1
但是Python中的第一个是起始位置,第二个是终止位置,最后一个是步长

matlab中的0.01表示注意

x=(.01:.01:.1)*pi
% 该式子的起始是0.01 步长为0.01,终止位置为0.1
x =

1 至 8 列

0.0314    0.0628    0.0942    0.1257    0.1571    0.1885    0.2199    0.2513

9 至 10 列

0.2827    0.3142

转置运算符 '(英文单引号)

d=[1:5]

d =

 1     2     3     4     5

h=[d’]

h =

 1
 2
 3
 4
 5

zeros函数(全零矩阵)

a=zeros(2)

a =

 0     0
 0     0

% 如果只有一个参数则生成n阶矩阵,如果给了m,n两个参数则生成mXn矩阵

b=zeros(2,4)

b =

 0     0     0     0
 0     0     0     0

ones(n) and one(m,n)

一个参数,生成n阶一矩阵
两个参数,生成mXn矩阵,eye函数相同
创建一个全1矩阵

a=ones(3)

a =

 1     1     1
 1     1     1
 1     1     1

a=ones(3,4)

a =

 1     1     1     1
 1     1     1     1
 1     1     1     1

b=eye(2)

eye(n) and eye(m,n)

生成单位矩阵
b =

 1     0
 0     1

b=eye(2,3)

b =

 1     0     0
 0     1     0

向量或数组的长度(取最大值)

length(b)

ans =

 3

size(矩阵的大小)

size(b)

ans =

 2     3

矩阵、数组、向量

A=[1,2;3,4;5,6]

A =

 1     2
 3     4
 5     6

B=[1,2,3,4]

B =

 1     2     3     4

C=[B’]

C =

 1
 2
 3
 4

A是2X3的矩阵,B是一个一维行向量,C是一个一维行向量

多维数组

c(:,:,1)=[1,2,3;4,5,6]
c1(:,:,2)=[1,2,3;4,5,6]

c =

 1     2     3
 4     5     6

whos c
Name Size Bytes Class Attributes

c 2x3 48 double
c1(:,:,2) =

 1     2     3
 4     5     6

whos c1
Name Size Bytes Class Attributes

c1 2x3x2 96 double

MATLAB中以列主导顺序分类数组中的元素

a=[1,2,3;4,5,6;7,8,9;10,11,12]

a =

 1     2     3
 4     5     6
 7     8     9
10    11    12

a(4)

ans =

10

a(2)

ans =

 4

a(5)

ans =

 2

a(1,2)

ans =

 2

a(4,1)

ans =

10

数组名(object),object可以是一个数字(第几个),也可以是两个数字(几行几列)

子数组

使用克隆运算符

a(:,1:1:3)

ans =

 1     2     3
 4     5     6
 7     8     9
10    11    12

a(:,1:2:3)

ans =

 1     3
 4     6
 7     9
10    12

a(:,1:3:3)

ans =

 1
 4
 7
10

a(1,:)

ans =

 1     2     3

a(2,:)

ans =

 4     5     6

a(3,:)

ans =

 7     8     9

a(4,:)

ans =

10    11    12

a(5,:)
索引超出矩阵维度。

a(:,1)

ans =

 1
 4
 7
10

a(:,2)

ans =

 2
 5
 8
11

a(:,3)

ans =

 3
 6
 9
12

a(:,4)
索引超出矩阵维度。

end函数

a

a =

 1     2     3
 4     5     6
 7     8     9
10    11    12

a(3:end,3:end)

ans =

 9
12

这里的a(行,列),类似于Python中的索引(切片)

x=[1,2,3,4,5,6,7,8]
print(x[3:])

在这里插入图片描述
将会从下标为3的元素开始直到结束

更改数组元素的值

子数组赋值只会改变部分值,如果直接赋值则会先把该数组原有内容删除,再赋新值

a

a =

 1     2     3
 4     5     6
 7     8     9
10    11    12

a(1:3,[2,3])=[22,33;55,66;88,99]
% 1:3 表示1到3行,[2,3]表示2到3列剩下的为更换的值,更换的值也可以用一个数字表示,则所要更改的元素都为该数字
a =

 1    22    33
 4    55    66
 7    88    99
10    11    12
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐