matlab 数值数组及其运算
数值数组(Numeric Array)和数组运算(Array Operation)是Matlab的核心运算
内容
一、导言
二、一维数组 (向量)
三、二维数组(矩阵)
四、高维数组
五、MATLAB 的运算符
内容
一、导言
二、一维数组 (向量)
三、二维数组(矩阵)
四、高维数组
五、MATLAB 的运算符
一、导言
1、数组的定义
数组是指一组实数或复数排成的长方阵列(Array)
一维的行或列 ? 向量
二位数组 ? 矩阵
三维的“若干矩阵的堆叠” ? 体
四维
更高维
2、数组运算
无论在数组上施加什么运算(+, -, * ,/,或函数等),该运算对数组中的每个元素都实施同样的操作。
Matlab的数组运算
使计算程序简短、易读
提高程序的向量化程度、提高计算效率
示例
x=0:0.1:1 %定义自变量的采样点取值数组
y=x.*exp(-x) %利用数组运算计算各自变量采样点上的函数值
plot(x,y),xlabel('x'),ylabel('y'),title('y=x*exp(-x)') %绘图
4 矩阵的索引或下标
矩阵 A 中,位于第 i 横列、第 j 直行的元素可表示为 A(i, j) ,i 与 j 即是此元素的下标(Sub
四维
更高维
2、数组运算
无论在数组上施加什么运算(+, -, * ,/,或函数等),该运算对数组中的每个元素都实施同样的操作。
Matlab的数组运算
使计算程序简短、易读
提高程序的向量化程度、提高计算效率
示例
x=0:0.1:1 %定义自变量的采样点取值数组
y=x.*exp(-x) %利用数组运算计算各自变量采样点上的函数值
plot(x,y),xlabel('x'),ylabel('y'),title('y=x*exp(-x)') %绘图
4 矩阵的索引或下标
矩阵 A 中,位于第 i 横列、第 j 直行的元素可表示为 A(i, j) ,i 与 j 即是此元素的下标(Sub
script)或索引(Index)
MATLAB 中,所有矩阵的内部表示法都是以直行为主的一维向量
A(i, j) 和 A(i+(j-1)*m) 是完全一样的~m为矩阵A的列数
我们可以使用一维或二维下标来存取矩阵
MATLAB 中,所有矩阵的内部表示法都是以直行为主的一维向量
A(i, j) 和 A(i+(j-1)*m) 是完全一样的~m为矩阵A的列数
我们可以使用一维或二维下标来存取矩阵
矩阵的索引或下标
可以使用矩阵下标来进行矩阵的索引(Indexing)
A(4:5,2:3) -取出矩阵 A 的 第四、五 横列与 二、三 直行所形成的部份矩阵
A([9 14; 10 15]) - 用一维下标的方式来达到同样目的
用冒号(:), 取出一整列或一整行
A(:, 5) -取出矩阵 A 的第五个直行
用 end 这个保留字来代表某一维度的最大值
A(:, end) - 矩阵 A 的最后一个直行
可以直接删除矩阵的某一整个横列或直行
A(2, :) = [] – 删除A矩阵的第二列
A(:, [2 4 5]) = [] - 删除 A 矩阵的第二、四、五直行
可以使用矩阵下标来进行矩阵的索引(Indexing)
A(4:5,2:3) -取出矩阵 A 的 第四、五 横列与 二、三 直行所形成的部份矩阵
A([9 14; 10 15]) - 用一维下标的方式来达到同样目的
用冒号(:), 取出一整列或一整行
A(:, 5) -取出矩阵 A 的第五个直行
用 end 这个保留字来代表某一维度的最大值
A(:, end) - 矩阵 A 的最后一个直行
可以直接删除矩阵的某一整个横列或直行
A(2, :) = [] – 删除A矩阵的第二列
A(:, [2 4 5]) = [] - 删除 A 矩阵的第二、四、五直行
二、一维数组
1 一维数组的创建
(1)逐个元素输入 []
Column
>> X = [ 1 ; 2 ; 3 ];
Row
>> Y = [ 1 , 2 , 3 ];
>> Y = [ 1 2 3 ];
1 一维数组的创建
(1)逐个元素输入 []
Column
>> X = [ 1 ; 2 ; 3 ];
Row
>> Y = [ 1 , 2 , 3 ];
>> Y = [ 1 2 3 ];
逗号和分号的作用
?逗号和分号可作为指令间的分隔符,matlab允许多条语句在同一行出现。
?分号如果出现在指令后,屏幕上将不显示结果。
?逗号和分号可作为指令间的分隔符,matlab允许多条语句在同一行出现。
?分号如果出现在指令后,屏幕上将不显示结果。
(2)冒号生成法 :
start:Step:stop
%其中start为初始值,step为步长,stop为终止值。
start:Step:stop
%其中start为初始值,step为步长,stop为终止值。
Start: stop %implies step=1
>> Z = 1:-0.25:0
Z = [ 1 , 0.75 , 0.5 , 0.25 , 0 ]
>> Z = 1:-0.25:0
Z = [ 1 , 0.75 , 0.5 , 0.25 , 0 ]
(3)定数线性采样法
linspace( Initial , Final , # Points )
x= linspace(a,b,n)
% a,b是数组首末元素,n是采样总点数
% 等同于 x= a: (b-a)/(n-1):b
>> Z = linspace( 5 , 20 , 4 )
Z =
[ 5 , 10 , 15 , 20 ];
>> x=linspace(2,8,3)
x =
2 5 8
linspace( Initial , Final , # Points )
x= linspace(a,b,n)
% a,b是数组首末元素,n是采样总点数
% 等同于 x= a: (b-a)/(n-1):b
>> Z = linspace( 5 , 20 , 4 )
Z =
[ 5 , 10 , 15 , 20 ];
>> x=linspace(2,8,3)
x =
2 5 8
(4)定数对数采样法
logspace( Initial , Final , # Points )
x= logspace(a,b,n) %首点是10^a,末点是10^b
x= logspace(a,b,n) %首点是10^a,末点是10^b
x=logspace(0,3,4)
x =
1 10 100 1000
2 一维数组的寻访
x=rand(1,5) %产生的均布随机数组
x =0.9501 0.2311 0.6068 0.4860 0.8913
x(3) %寻访数组x的第三个元素。
x([1 2 5]) %寻访数组x的第1、2、5个元素组成的子数组
x(1:3) %寻访前三个元素组成的子数组
x(3:end) %寻访除前2个元素外的全部其他元素
x(3:-1:1) %由前三个元素倒排构成的子数组
x(find(x>0.5)) %由大于0.5的元素构成的子数组
x([1 2 3 4 4 3 2 1]) %对元素可以重复寻访
x =
1 10 100 1000
2 一维数组的寻访
x=rand(1,5) %产生的均布随机数组
x =0.9501 0.2311 0.6068 0.4860 0.8913
x(3) %寻访数组x的第三个元素。
x([1 2 5]) %寻访数组x的第1、2、5个元素组成的子数组
x(1:3) %寻访前三个元素组成的子数组
x(3:end) %寻访除前2个元素外的全部其他元素
x(3:-1:1) %由前三个元素倒排构成的子数组
x(find(x>0.5)) %由大于0.5的元素构成的子数组
x([1 2 3 4 4 3 2 1]) %对元素可以重复寻访
X(0) 或 x(6) ?Error
子数组的赋值(Assign)
x(3) = 0 %把上例中的第三个元素重新赋值为0
x =
0.9501 0.2311 0 0.4860 0.8913
x([1 4])=[1 1] %把当前x数组的第一、四个元素都赋值为1。
x =
1.0000 0.2311 0 1.0000 0.8913
3 一维数组的操作
>> X = [ 1 ; 2 ; 3 ];
(+)
>> Z = X + 2
>> Z = X + 2
Z = [ 3 ; 4 ; 5 ]
(-)
(*)
>> Z = 2 * X
Z = [ 2 ; 4 ; 6 ]
(/)
>> Z = X / 2
Z = [ 0.5 ; 1 ; 1.5 ]
内积
数组全部赋值为1>> X = [ 1 , 2 , 3 ]; >> Y = [ 1 ; 2 ; 3 ]; >> Z = X * Y
Z = 14
(-)
(*)
>> Z = 2 * X
Z = [ 2 ; 4 ; 6 ]
(/)
>> Z = X / 2
Z = [ 0.5 ; 1 ; 1.5 ]
内积
数组全部赋值为1>> X = [ 1 , 2 , 3 ]; >> Y = [ 1 ; 2 ; 3 ]; >> Z = X * Y
Z = 14
平均值
>> X = rand(10);
>> Y = mean( X )
>> X = rand(10);
>> Y = mean( X )
中值
>> Y = mean( X )
>> Y = mean( X )
最大值
>> Y = max( X )
>> Y = max( X )
最小值
>> Y = min( X )
>> Y = min( X )
Sort指令
sort 指令可对向量元素进行排序(Sorting)
x = [3 5 8 1 4];
[sorted, index] = sort(x) % 对矩阵 x 的元素进行排序
sorted =
1 3 4 5 8
index =
4 1 5 2 3
sort 指令可对向量元素进行排序(Sorting)
x = [3 5 8 1 4];
[sorted, index] = sort(x) % 对矩阵 x 的元素进行排序
sorted =
1 3 4 5 8
index =
4 1 5 2 3
sorted 是排序后的向量,index 则是每个排序后的元素在原向量 x 的位置
x(index) 即等于 sorted 向量
向量的p-norm
向量a 的 p-norm 可以定义为
x(index) 即等于 sorted 向量
向量的p-norm
向量a 的 p-norm 可以定义为
p=2 时,即为向量 a 的长度,或称欧氏长度(Euclidean Length)
欲求一向量的 p-norm,可用 norm 指令 norm(x,p)
a = [3 4];
x = norm(a, 1) % x = 7
y = norm(a, 2) % y = 5
z = norm(a, inf) % z = 4
三、 二维数组(矩阵)
数组运算指元素对元素的算术运算,与通常意义上的由符号表示的线性代数矩阵运算不同
二维数组
二维数组又简称矩阵,具有两个维度
欲求一向量的 p-norm,可用 norm 指令 norm(x,p)
a = [3 4];
x = norm(a, 1) % x = 7
y = norm(a, 2) % y = 5
z = norm(a, inf) % z = 4
三、 二维数组(矩阵)
数组运算指元素对元素的算术运算,与通常意义上的由符号表示的线性代数矩阵运算不同
二维数组
二维数组又简称矩阵,具有两个维度
「列」(Row)
「行」(Column)
1、二维数组的创建
(1)直接输入法
a=2.7358; b=33/79; %分别给变量 a ,b 赋值
C=[1,2*a+i*b,b*sqrt(a);sin(pi/4),a+5*b,3.5+i]
%创建二维数组C
C =
1.0000 5.4716 + 0.4177i 0.6909
0.7071 4.8244 3.5000 + 1.0000i
规则:
矩阵元素必须用[ ]括住
矩阵元素必须用逗号或空格分隔
在[ ]内矩阵的行与行之间必须 用分号分隔
(2) 利用M文件创建和保存数组
「行」(Column)
1、二维数组的创建
(1)直接输入法
a=2.7358; b=33/79; %分别给变量 a ,b 赋值
C=[1,2*a+i*b,b*sqrt(a);sin(pi/4),a+5*b,3.5+i]
%创建二维数组C
C =
1.0000 5.4716 + 0.4177i 0.6909
0.7071 4.8244 3.5000 + 1.0000i
规则:
矩阵元素必须用[ ]括住
矩阵元素必须用逗号或空格分隔
在[ ]内矩阵的行与行之间必须 用分号分隔
(2) 利用M文件创建和保存数组
创建和保存数组 AM的 MyMatrix.m 文件。% MyMatrix.m Creation and preservation of matrix AM
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论