matlab数组操作

matlab数组操作
matlab数组操作

1.一个三维数组由行、列和页三维组成,其中每一页包含一个由行和列构成的二维数组。

2.利用标准数组函数创建多维数组

A=zeros(4,3,2) 生成一个4行3列2页的三维全0数组,ones,rand和randn等函数有相似的用法。

3.利用直接索引方式生成多维数组

A=zeros(2,3)

A(:,:,2)=ones(2,3)

A(:,:,3)=4

上面的代码先生成一个二维数组作为三维数组的第一页,然后通过数组直接索引,添加第二页、第三页。

4.利用函数reshape和repmat生成多维数组

B=reshape(A,2,9)

B=[A(:,:,1) A(:,:,2) A(:,:,3)] %结果与上面一样。

reshape(B,2,3,3)

reshape(B,[2 3 3]) %结果与上面一样。

提示:reshape函数可以将任何维数的数组转变成其他维数的数组。

5.利用repmat函数生成多维数组

C=ones(2,3)

repmat(C,[1 1 3]) % repmat写出类似reshape的repmat(C,1,1,3)将显示出错

提示:repmat是通过数组复制创建多维数组的,上面的代码即是将数组C在行维和列维分别复制一次,然后再页维复制三次得到2×3×3的三维数组。

6.利用cat函数创建多维数组

a=zeros(2);

b=ones(2);

c=repmat(2,2,2);

D=cat(3,a,b,c)%创建三维数组

D=cat(4,a,b,c) %创建4维数组。

D(:,1,:,:) %查看第一列的数据。

size(D) %可以知道数组D的具体维数。

6.数组运算与处理

数组之间的运算要求两个数组在任何一维都必须具有相同的大小。

(1)squeeze函数用于删除多维数组中的单一维(即大小为1的那些维)

E=squeeze(D)

size(D) E的数据和D一样,但比D少了一维,只有2行、2列和3页。

(2)reshape函数可以将一个三维向量变成一维向量。

v(1,1,:)=1:6

squeeze(v)

v(:)

(3)reshape函数用于改变多维数组的行、列、页以及更高阶的维数,但不改变数组元素的总个数。

F=cat(3,2+zeros(2,4),ones(2,4),zeros(2,4))

G=reshape(F,[3,2,4])

H=reshape(F,[4 3 2]) 或K=reshape(F,2,12)

多维数组的重组按这样的顺序:第一页的第一列、第二列……,第二页的第一列、第二列……。

7.sub2ind函数和ind2sub函数用于多维数组的直接引用,索引顺序与重组顺序一致。

sub2ind(size(F),1,1,1) %求第1行、第1列、第1页的数值的单一索引

sub2ind(size(F),1,2,1) %求第1行、第2列、第1页的数值的单一索引

sub2ind(size(F),1,2,3) %求第1行、第2列、第3页的数值的单一索引

[r c p]=ind2sub(size(F),19) %由单一索引求其对应的行列页数值。

8.函数flipdim用于多维数组的翻转,相当于二维数组中的flipud和fliplr函数。例如下面的代码进行按行、列和按页翻转。

M=reshape(1:18,2,3,3)

flipdim(M,1) %每一页中的行翻转

flipdim(M,2) %每一页中的列翻转

flipdim(M,3) %将第一和第三页翻转调换

9.函数shiftdim用于循环轮换一个数组的维数。如果一个数组r行、c列和p页,则循环轮换一次,就生成一个c行、p列和r页的数组。

M %重新调用

shiftdim(M,1) %轮换一次

shiftdim(M,2) %轮换两次

数组轮换后规律很难直观理解,我们可以将三维数组看成一个类似魔方的方形盒子

函数shiftdim也支持负的循环轮换次数。执行该轮换时,数组的维数增加,并且多出的维数均为单一维。

M %重新调用

size(M)

shiftdim(M,-1)

size(ans).

10.函数permute和ipermute用于实现多维条件下的转置操作。从本质上讲permute函数是

shiftdimhas函数的扩展。

M %重新调用

permute(M,[2 3 1])

shiftdim(M,1) %两者结果一样

permute函数中的参数[2 3 1]表示使函数第二维成为第一维,第三维成为第二维,第一维成为第三维。

11. permute(M,[2 1 3])

[2 1 3]表示将数组的行列相互转置,页保持不变(只在第一和第二维转置)。permute函数的第一个参数为待转置的数组,第二个参数为转置顺序,它必须是待转置的多维数组的维数的某种排列,否则所进行的转置无法进行。

permute函数也可以用来将一个数组变成更高维的数组,例如shiftdim(M,-1)也可以用permute函数来实现。

permute(M,[4 1 2 3])

这是因为任何一个数组都具有大于其本身尺寸的更高维数,并且这些维数均为单一维数。例如二维数组具有页这一维,只是只有一页。总之超过数组本身大小的维数都是单一维。M 是一个三维数组,其第四维必为单一维,因此将M的第四维与第一维转置,第一维变成了单一维。

12.二维数组两次转置变换回原来的形式,对于多维数组,用函数ipermute来取消permute 所执行的转置操作。

M %重新调用

permute(M,[3 2 1])

ipermute(M,[3 2 1]) %在我的Matlab上运行没有达到预期效果

13.size函数返回数组每一维的大小

numel函数返回数组的总元素个数

当不指定size的返回值时,将返回一个由数组的各维数组成的向量。当我们知道数组的维数时,可以将维数返回到指定变量中。

[r c p]=size(M)

r=size(M,1)

c=size(M,2)

p=size(M,3)

v=size(M,4)

当一个数组的维数或者某数组维数不确定时,可以利用函数ndims获得数组的维数值。例如:ndims(M),与length(size(M))等效。

MATLAB数组基本操作

1、向量的创建 1)直接输入: 行向量:a=[1,2,3,4,5] 列向量:a=[1;2;3;4;5] 2)用“:”生成向量 a=J:K 生成的行向量是a=*J,J+1,…,K+ a=J:D:K 生成行向量a=*J,J+D,…,J+m*D+,m=fix((K-J)/D) 3)函数linspace 用来生成数据按等差形式排列的行向量 x=linspace(X1,X2):在X1和X2间生成100个线性分布的数据,相邻的两个数据的差保持不变。构成等差数列。 x=linspace(X1,X2,n): 在X1和X2间生成n个线性分布的数据,相邻的两个数据的差保持不变。构成等差数列。 4)函数logspace用来生成等比形式排列的行向量 X=logspace(x1,x2) 在x1和x2之间生成50个对数等分数据的行向量。构成等比数列,数列的第一项x(1)=10x1,x(50)=10x2 X=logspace(x1,x2,n) 在x1和x2之间生成n 个对数等分数据的行向量。构成等比数列,数 列的第一项x(1)=10x1,x(n)=10x2 注:向量的的转置:x=(0,5)’ 2、矩阵的创建 1)直接输入:将数据括在[]中,同一行的元素 用空格或逗号隔开,每一行可以用回车或是 分号结束 如:a=[1,2,3;3,4,5],运行后: a = 1 2 3 3 4 5

2)函数eye,生成单位矩阵 eye(n) :生成n*n阶单位E eye(m,n):生成m*n的矩阵E,对角线元素为1,其他为0 eye(size(A)):生成一个矩阵A大小相同的单位矩阵 eye(m,n,classname):对角线上生成的元素是1,数据类型用classname指定。其数据类型可以是:duoble、single、int8、uint8、int16、uint16、int32、uint32 。 3)函数ones 用ones生成全1的矩阵ones(n) : 生成n*n的全1矩阵 ones(m,n) : 生成m*n的全1矩阵 ones(size(A)) : 生成与矩阵A大小相同的全1矩阵 ones(m,n,p,…)生成m*n*p*….的全1的多维矩阵 ones(m,n,…,classname)制定数据类型为 classname 4)函数zeros 函数zeros生成全0矩阵zeros(n):生成n*n的全0矩阵 zeros(m,n:)生成m*n的全0矩阵 zeros(size(A)): 生成与矩阵A大小相同的全0矩阵 zeros (m,n,p,…)生成m*n*p*….的全0的多维矩阵 zeros (m,n,…,classname)指定数据类型为 classname

matlab数组运算

Matlab中数组元素引用有三种方法: 1.下标法(subscripts) 2.索引法(index) 3.布尔法(Boolean) 在使用这三种方法之前,大家头脑一定要清晰的记住,Matlab中数组元素是按列存储(与Fortran一样),比如说下面的二维数组 A= 8 1 6 3 5 7 4 9 2 Matlab的存储顺序是8,3,4,1,5,9,6,7,2,也就是说先行后列,对于3维数组呢,就是先行后列再页 对应个元素的索引和下标分别为 Element Index Subscripts 8 1 (1,1) 3 2 (2,1) 4 3 (3,1) 1 4 (1,2) 5 5 (2,2) 9 6 (3,2) 6 7 (1,3) 7 8 (2,3) 2 9 (3,3) 从上面的例子中已经很清晰的说明了下标和索引的区别了,也就是说Matlab为没有个元素分配了一个唯一识别的ID(即index) 1.下标法引用 A(ii,jj):其中ii和jj可以是一维向量、标量、“:”号或者“end” 大家对下标估计比较熟悉,由于在C语言中接触过,但是我这里需要强调的是,Matlab的下标是可以多行多列同时引用的,而像C语言等一次只能引用一个,比如 A(2:3,3:-1:1)表示引用数组中的2~3行,3~1列对应的元素 A(:,end)表示引用最后一列元素,“:”表示所有列或行,“end”表示最后一列或列,“end-n”表示倒数第n行或列 A(1,end-1)表示引用第1行倒数第2个元素

A([2 1 3 3],[1 1 2 2 1])表示引用按两个向量引用指定的元素,即A中的第2,1,3,3行和第1,1,2,2,1列对应的元素 >>A=magic(3) A = 8 1 6 3 5 7 4 9 2 >>A(2:3,3:-1:1) ans = 7 5 3 2 9 4 >>A(:,end) ans = 6 7 2 >>A(1,end-1) ans = 1 >>A([2 1 3 3],[1 1 2 2 1]) ans = 3 3 5 5 3 8 8 1 1 8 4 4 9 9 4 4 4 9 9 4 2.索引法引用(说白了索引就是存储顺序) A(index):index可以是任意的数组,index的元素必须是正整数,且不大于numel(A),返回的是一个尺寸与index一样的数组 下标和索引之间可以通过ind2sub和sub2ind函数相互转换,具体可以看帮助,很简单 [I,J] = ind2sub(siz,IND)

Matlab的基本操作及变量、数组及其答案

实验一Matlab的基本操作及变量、数组 一、实验目的: 1. 熟悉Matlab的开发环境,基本类型的Matlab窗口、工作空间和如何获得在线帮助。 2. 熟悉和掌握Matlab变量和数组的基本操作 二、实验内容: 1. Matlab的基本操作 1.3 先自定义一个变量,然后分别用8种不同的数字显示格式显示查看。 >> format compact >> a=3.14159265358979 a = 3.14159265358979 >> format long >> a a = 3.141592653589790 >> format short e >> a a = 3.1416e+000 >> format long e >> a a = 3.141592653589790e+000 >> format hex >> a a = 400921fb54442d11 >> format bank >> a a = 3.14 >> format + >> a a = + >> format rat >> a a = 355/113 >> format short >> a a = 3.1416 1.4 下面的语句用于画出函数()0.2 2x y x e- =在[0,10]区间的值 x = 0:0.1:10; y = 2*exp(-0.2*x); plot(x,y) 用Matlab编辑器创建一个m文件,把上述语句写入这个m文件并命名为“test1.m”,保存在当前路径中,然后在命令窗中键入test1,观察结果和运行程序后工作空间的变化.

如何清空工作区间数据? 键入 clear ; 如何关闭图像窗口? 键入close ; 除了在命令窗输入文件名,还可以怎样运行一个m 文件程序? 点击file ,打开m 文件,点击Run 按钮,运行m 文件程序。 如果希望在命令窗中显示x 和y 的所有取值,应对程序做出怎么样的修改? x = 0:0.1:10; y = 2*exp(-0.2*x); plot(x,y); x,y 1.5 通过以下两种方式得到关于exp 函数的帮助: (1) 在命令窗中输入help exp 命令; (2) 运用帮助空间窗口。思考,用什么指令可以直接打开帮助空间中关于exp 函数的说明? 键入doc exp ;或者点击help ,再点击product help ,键入exp 搜索. 1.6 假设x =3,y = 4,用Matlab 计算下列表达式: (1) () 23 2 x y x y - (2) 43x y (3) 24x x π- (4) 3 3x x x y - >> format compact >> x=3,y=4 x = 3 y = 4 >> x^2*(y^3)/(x-y)^2 ans = 576 >> 4*x/(3*y) ans = 1 >> 4/x*(pi*x^(-2)) ans = 0.4654 >> x^3/(x^3-y^x) ans = -0.7297 1.7 在当前目录下创建一个m 文件, 键入以下程序并保存,先把文件保存为“2.m ”,运行后观察结果,总结m 文件的文件名(包括Matlab 标识符)命名规则。对该文件重新命名后运行,保存运行结果。 t = -2*pi:pi/10:2*pi; y = abs(sin(t)); plot(t,y) >> 2 ans = 2 重新命名m 文件后运行的结果:

matlab数组操作

1.一个三维数组由行、列和页三维组成,其中每一页包含一个由行和列构成的二维数组。 2.利用标准数组函数创建多维数组 A=zeros(4,3,2) 生成一个4行3列2页的三维全0数组,ones,rand和randn等函数有相似的用法。 3.利用直接索引方式生成多维数组 A=zeros(2,3) A(:,:,2)=ones(2,3) A(:,:,3)=4 上面的代码先生成一个二维数组作为三维数组的第一页,然后通过数组直接索引,添加第二页、第三页。 4.利用函数reshape和repmat生成多维数组 B=reshape(A,2,9) B=[A(:,:,1) A(:,:,2) A(:,:,3)] %结果与上面一样。 reshape(B,2,3,3) reshape(B,[2 3 3]) %结果与上面一样。 提示:reshape函数可以将任何维数的数组转变成其他维数的数组。 5.利用repmat函数生成多维数组 C=ones(2,3) repmat(C,[1 1 3]) % repmat写出类似reshape的repmat(C,1,1,3)将显示出错 提示:repmat是通过数组复制创建多维数组的,上面的代码即是将数组C在行维和列维分别复制一次,然后再页维复制三次得到2×3×3的三维数组。 6.利用cat函数创建多维数组 a=zeros(2); b=ones(2); c=repmat(2,2,2); D=cat(3,a,b,c)%创建三维数组 D=cat(4,a,b,c) %创建4维数组。 D(:,1,:,:) %查看第一列的数据。 size(D) %可以知道数组D的具体维数。 6.数组运算与处理 数组之间的运算要求两个数组在任何一维都必须具有相同的大小。 (1)squeeze函数用于删除多维数组中的单一维(即大小为1的那些维) E=squeeze(D) size(D) E的数据和D一样,但比D少了一维,只有2行、2列和3页。

Matlab使用单元数组和结构数组

Matlab使用字符串数组、单元数组(cell array)和结构数组(struct array) 要在MALTAB中实现比较复杂的编程,就不能不用单元数组(cell array)和结构数组(structarray)。而且在Matlab中实现struct比C中更为方便。 MATLAB字符串数组的创建与运算 字符串数组主要用于可视化编程内容,如界面设计和图形绘制。 1.字符串变量的创建 字符变量的创建方法是:在指令窗口中先把待建的字符放在“单引号对”中,再按回车键。注意,该“单引号对”必须在英文状态下输入。这“单引号对”是MATLAB用来识别字符串变量所必须的。如: >>a='This is an example.' a = This is an example. >>msg = 'You''re right!' %创建带单引号的字符串 msg = You're right! 2.字符串数组的标识 字符串变量的每个字符(英文字母、空格和标点都是平等的)占据一个元素位,在数组中元素所处的位置用自然数标识。如: >>a='This is an example.' >>b=a(1:4) % 提出一个子字符串 b = This ra=a(end:-1:1) % 字符串的倒排 ra = .elpmaxe na si sihT 又如: >>A='这是一个算例。'; >>B=size(A) % 符号数组A 的“大小” B = 1 7 >>C=A([5 6]) % 提出一个子字符串 C = 算例 3.字符串的ASCII码 字符串的存储是用ASCII码实现的。指令abs和double都可以用来获取串数组所对应的ASCII码数值数组。指令char可把ASCII码数组变为串数组。如

MATLAB单元数组应用

摘要 单元数组中的每一个元素称为单元(cell). 单元可以包含任何类型的matlab数据, 这些数据类型包括数值数组, 字符, 符号对象, 甚至其他的单元数组和结构体. 不同的单元可以包含不同的数据.同时它也可以和结构数组变换使用。 我们都熟悉阵列或矩阵的构成,比如一个m*n大小的矩阵,那么它有m 行、n列,共有m*n个元素。如果我们只在实数范围内考虑,那么对应的每一个元素就是一个实数,这是一般的实矩阵。单元阵列也可以有m行n列,对应有m*n个元素。所不同的是单元阵列中每个元素是一个cell(元胞),而每个cell 可以由不同数据格式的矩阵构成,构成每个cell的矩阵大小也可以不同,可以是一个元素,也可以是一个向量,也可以是一个多维数组。 单元数组所要解决的问题: 对于一些小规模问题,我们可以通过变量轻易解决。或者一些大规模问题,但是涉及的变量类型只有一种,可以用数组解决。但是对于变量类型很多的,我们要进行大规模复杂的处理,用数组来处理就显得没有那么方便,这种情况下我们一般用单元数组来解决。既解决变量存储问题,又能很方便的提取数据。其中单元数组又可以跟结构数组的变换,以及单元数组可以进行各种复杂的矩阵变换,以解决更多的问题。 MTALAB软件的介绍: MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。 MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室),简单来说MATLAB的基本数据单位是矩阵。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。 1.单元数组创建与显示: 1.1、直接赋值法:按单元索引法和按内容索引法。(其实也就是将花括号放在等式的右边或是左边的区别)。注意:“按单元索引法”和“按内容索引法”是完全等效的,可以互换使用。通过下面实例,我们看到:花括号{}用于访问单元的值,而括号()用于标识单元(即:不用于访问单元的值)。具体理解{}和()

matlab实验报告(二)矩阵和数组操作

一、实验目的 1.掌握矩阵和数组的一般操作,包括创建、保存、修改和调用等。 2.学习矩阵和数组的加减运算与乘法。 3.掌握对数组中元素的寻访与赋值,会对数组进行一般的操作。二、预备知识 1.常用的产生特殊矩阵的函数 ?eye(m,n) 单位阵 ?rand(m,n) 随机矩阵 ?randn(m,n) 正态分布的随机矩阵 ?zeros(m,n) 零矩阵 ?ones(m,n) 全部元素都为1的矩阵 ?compan(A) 矩阵A的伴随矩阵 ?bankel(m,n) n维Hankel矩阵 ?invhilb(n) n维逆Hilbert矩阵 ?magic(n) n维Magic矩阵 ?toeplitz(m,n) Toeplitz矩阵 ?wilkinson(n) n维Wilkinson特征值测试矩阵 ?handamard(n) n维Handamard矩阵 ?hilb(n) n维Hilbert矩阵 ?kron(A,B) Kronecker张量积 ?pascal(n) n维Pascal矩阵 ?vander(A) 由矩阵A产生Vandermonde矩阵 2.通过矩阵的结构变换,获得新矩阵 表2 矩阵结构变化产生新矩阵

3.数组(矩阵)操作 对数组或矩阵的基本操作有插入、重新排列、提取、按列拉长、置空(去掉某行或某列)、置零、用单信下标操作一个矩阵,用逻辑数组操作一个矩阵、按指定条件求子数组,求数组的规模等,下面一一举例说明(对数组和矩阵不加区别)。 X=4:6 x=4 5 6 ①插入通过对x进行插入运算创建矩阵A A=[x-3;x;x+3] A=1 2 3 4 5 6 7 8 9 ②重新排列以逆序重排A的各行形成矩阵B B=A(3:-1:1,1:3) B=7 8 9 4 5 6 1 2 3 ③提取提取A的前两行的后两列形成矩阵C C=A(1:2,2:3) C=2 3 5 6 ④按列拉长对C按列拉长形成矩阵D D=C(:) D=2 5 3

(完整版)Matlab学习心得系列——005.结构数组

005. 结构数组 编程语言要描述日常生活中的某一类事物,就是要赋予这类事物一个公共名称(类名),再把这类事物具有的各种属性分别存放为若干变量(数据元素),这就是“结构体”。结构体里再加上若干操作其数据元素的函数(成员函数),就是“类”。然后,“类”就可以作为新的数据类型定义对象(类的实例化),再操作这些对象,实现编程需要。 以上就是面向对象的编程思想(适合C++或Java。 例如,描述学生,就用一个学生类Stude nt;学生属性:学号、 姓名、专业;实现操作:学生转专业。(粗略C++代码) class Student { private: // 数据元素一般设为该类的私有数据,防止属性被随意修改 int number; string name; string major; public:// string 定义字符串 // 成员函数一般设为可公共访问 Student(int num, string n, string m); // 类构造函数用于生成具体对象,必须与类名相同 void ChangeMajor(String newmajor); } Student:: Student(int num, string n, string m) { number = num; name = n; major = m; } void Student:: ChangeMajor(String newmajor) // Student:: 表示函数是来自Student 类 { major = newmajor; } // 下面是使用Student 类:

Student s1; // 用Student 类定义一个“学生”对象s1 s1. ChangeMajor(“ Math ”// );把学生s1 的专业修改为“ Math ” 可见,借助结构体或类的编程,既能与现实世界中的事物建立自然的对应(符合思维习惯),又能实现模型化的“批量生产”(用“类” 可以整体性地、一遍一遍地建立对象、操作对象)。这也是结构体或类(面向对象编程)的优势所在。 回到Matlab ,元胞数组只是呆板的堆放数据的仓库,结构数组则具有了与实际对象所对应的结构属性,这等同于“ C 语言的结构体”、“C++或Java的类的数据成员部分”。 结构数组是由若干个结构(struct )组成,每个结构都包含多个结构域(fields);数据必须存放在结构域中,可以是任何类型、任意大小的数据。例如,多个图形对象构成一个结构数组,每个图形对象就是一个结构,图形对象的一个属性对应一个结构域。 即,结构数组(矩阵)的元素是结构,每个结构包含若干结构域。 结构数组的创建 1. 用直接赋值语句创建 例1创建学生的结构数组,每个结构包含学号、姓名两个结构域(属性) stude nt(1). nu mber = '001';

MATLAB实验报告

MATLAB 实验报告 姓名: 专业: 学号:

实验一 MATLAB环境的熟悉与基本运算 一、实验目的: 1.熟悉MATLAB开发环境 2.掌握矩阵、变量、表达式的各种基本运算 二、实验基本知识: 1.熟悉MATLAB环境: MATLAB桌面和命令窗口、命令历史窗口、帮助信息浏览器、工作空间浏览器文件和搜索路径浏览器。 2.掌握MATLAB常用命令 3.MATLAB变量与运算符 变量命名规则如下: (1)变量名可以由英语字母、数字和下划线组成 (2)变量名应以英文字母开头 (3)长度不大于31个 (4)区分大小写 MATLAB中设置了一些特殊的变量与常量,列于下表。

MATLAB运算符,通过下面几个表来说明MATLAB的各种常用运算符 表2 MATLAB算术运算符 表3 MATLAB关系运算符 表4 MATLAB逻辑运算符 表5 MATLAB特殊运算

4.MATLAB的一维、二维数组的寻访 表6 子数组访问与赋值常用的相关指令格式 5.MATLAB的基本运算 表7 两种运算指令形式和实质内涵的异同表 6.MATLAB的常用函数

表8 标准数组生成函数 表9 数组操作函数 三、实验内容 1、学习安装MATLAB软件。 2、学习使用help命令,例如在命令窗口输入help eye,然后根据帮助说明, 学习使用指令eye(其它不会用的指令,依照此方法类推) 3、学习使用clc、clear,观察command window、command history和workspace 等窗口的变化结果。 4、初步程序的编写练习,新建M-file,保存(自己设定文件名,例如exerc1、 exerc2、exerc3……),学习使用MATLAB的基本运算符、数组寻访指 令、标准数组生成函数和数组操作函数。 注意:每一次M-file的修改后,都要存盘。 四、实验结果 练习A: (1)help rand,然后随机生成一个2×6的数组,观察command window、command history和workspace等窗口的变化结果。

Matlab矩阵操作函数汇总

矩阵创建相关函数 cat函数 语法说明:A = cat(n,A1,A2,… ,Am) 功能介绍:创建多维数组 实例: >> A1 = [1 2 3; 4 5 6; 7 8 9];A2 = A1'; A3 = A1 - A2; >> A4 = cat(3, A1, A2, A3) A4(:,:,1) = 1 2 3 4 5 6 7 8 9 A4(:,:,2) = 1 4 7 2 5 8 3 6 9 A4(:,:,3) = 0 -2 -4 2 0 -2 4 2 0 n = 3是构造三维数组,n = 1和2分别构造[A1;A2]以及[A1,A2],都是二维数组。

eye函数 功能介绍:单位矩阵生成 语法说明: ?Y = eye(n),生成n*n单位矩阵 ?Y = eye(m, n),生成m*n单位矩阵 ?Y = eye(sizes(A)),生成与矩阵A相同大小的单位矩阵实例: >> n = 3; m = 5; >> Y1 = eye(n) Y1 = 1 0 0 0 1 0 0 0 1 >> Y2 = eye(m, n) Y2 = 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 ones函数

功能介绍:全1矩阵生成 语法说明: ?Y=ones(n):生成n*n全1矩阵 ?Y =one(m,n):生成m*n全1矩阵 ?Y=ones([m,n]):生成m*n全1矩阵 ?Y=ones(d1,d2,d3):生成d1*d2*d3全1矩阵 ?Y=ones([d1,d2,d3]):生成d1*d2*d3全1矩阵 ?Y=ones(size(A)):生成与矩阵A相同大小的全1矩阵 strcmp函数 功能介绍:字符串比较函数 语法说明: ?Y=strcmp(str1,str2):比较两个字符串是否相等,返回值是0或者 ‘==’也是比较前后两个字符串,且要求前后两个字符串长度相同,但是是每个位置都进行比较。返回的一般是一个数组 实例: >> D = strcmp('hello', 'Hello') D = >> D = strcmp('Hello','Hello') D = 1

Matlab中数组元素引用

[转载]Matlab中数组元素引用 作者:MyheartVikie Matlab中数组元素引用有三种方法: 1.下标法(subscripts) 2.索引法(index) 3.布尔法(Boolean) 在使用这三种方法之前,大家头脑一定要清晰的记住,Matlab中数组元素是按列存储(与Fortran一样),比如说下面的二维数组 A= 8 1 6 3 5 7 4 9 2 Matlab的存储顺序是8,3,4,1,5,9,6,7,2,也就是说先行后列,对于3维数组呢,就是先行后列再页 对应个元素的索引和下标分别为 Element Index Subscripts 8 1 (1,1) 3 2 (2,1) 4 3 (3,1) 1 4 (1,2) 5 5 (2,2) 9 6 (3,2) 6 7 (1,3) 7 8 (2,3) 2 9 (3,3) 从上面的例子中已经很清晰的说明了下标和索引的区别了,也就是说Matlab为没有个元素分配了一个唯一识别的ID(即index) 1.下标法引用 A(ii,jj):其中ii和jj可以是一维向量、标量、“:”号或者“end” 大家对下标估计比较熟悉,由于在C语言中接触过,但是我这里需要强调的是,Matlab的下标是可以多行多列同时引用的,而像C语言等一次只能引用一个,比如

A(2:3,3:-1:1)表示引用数组中的2~3行,3~1列对应的元素 A(:,end)表示引用最后一列元素,“:”表示所有列或行,“end”表示最后一列或列,“end-n”表示倒数第n行或列 A(1,end-1)表示引用第1行倒数第2个元素 A([2 1 3 3],[1 1 2 2 1])表示引用按两个向量引用指定的元素,即A中的第2,1,3,3行和第1,1,2,2,1列对应的元素 >>A=magic(3) A = 8 1 6 3 5 7 4 9 2 >>A(2:3,3:-1:1) ans = 7 5 3 2 9 4 >>A(:,end) ans = 6 7 2 >>A(1,end-1) ans = 1 >>A([2 1 3 3],[1 1 2 2 1]) ans = 3 3 5 5 3 8 8 1 1 8 4 4 9 9 4 4 4 9 9 4 2.索引法引用(说白了索引就是存储顺序) A(index):index可以是任意的数组,index的元素必须是正整数,且不大于numel(A),返回的是一个尺寸与index一样的数组

MATLAB 矩阵操作大全

MATLAB 矩阵操作大全 转载自: https://www.360docs.net/doc/5213061156.html,/dengjianqiang2011/article/details/8753807 MATLAB矩阵操作大全 一、矩阵的表示 在MATLAB中创建矩阵有以下规则: a、矩阵元素必须在”[ ]”内; b、矩阵的同行元素之间用空格(或”,”)隔开; c、矩阵的行与行之间用”;”(或回车符)隔开; d、矩阵的元素可以是数值、变量、表达式或函数; e、矩阵的尺寸不必预先定义。 二,矩阵的创建: 1、直接输入法 最简单的建立矩阵的方法是从键盘直接输入矩阵的元素,输入的方法按照上面的规则。建立向量的时候可以利用冒号表达式,冒号表达式可以产生一个行向量,一般格式是: e1:e2:e3,其中e1为初始值,e2为步长,e3为终止值。还可以用linspace函数产生行向量,其调用格式为:linspace(a,b,n) ,其中a和b是生成向量的第一个和最后一个元素,n是元素总数。 2、利用MATLAB函数创建矩阵 基本矩阵函数如下: (1) ones()函数:产生全为1的矩阵,ones(n):产生n*n维的全1矩阵,ones(m,n):产生m*n维的全1矩阵; (2) zeros()函数:产生全为0的矩阵; (3) rand()函数:产生在(0,1)区间均匀分布的随机阵; (4) eye()函数:产生单位阵; (5) randn()函数:产生均值为0,方差为1的标准正态分布随机矩阵。

3、利用文件建立矩阵 当矩阵尺寸较大或为经常使用的数据矩阵,则可以将此矩阵保存为文件,在需要时直接将文件利用load命令调入工作环境中使用即可。同时可以利用命令reshape对调入的矩阵进行重排。reshape(A,m,n),它在矩阵总元素保持不变的前提下,将矩阵A重新排成m*n 的二维矩阵。 二、矩阵的简单操作 1.获取矩阵元素 可以通过下标(行列索引)引用矩阵的元素,如Matrix(m,n)。 也可以采用矩阵元素的序号来引用矩阵元素。 矩阵元素的序号就是相应元素在内存中的排列顺序。 在MATLAB中,矩阵元素按列存储。 序号(Index)与下标(Subscript )是一一对应的,以m*n矩阵A为例,矩阵元素A(i,j)的序号为(j-1)*m+i。 其相互转换关系也可利用sub2ind和ind2sub函数求得。 2.矩阵拆分 利用冒号表达式获得子矩阵: (1) A(:,j)表示取A矩阵的第j列全部元素;A(i,:)表示A矩阵第i行的全部元素;A(i,j)表示取A矩阵第i行、第j列的元素。 (2) A(i:i+m,:)表示取A矩阵第i~i+m行的全部元素;A(:,k:k+m)表示取A矩阵第 k~k+m列的全部元素,A(i:i+m,k:k+m)表示取A矩阵第i~i+m行内,并在第k~k+m 列中的所有元素。此外,还可利用一般向量和end运算符来表示矩阵下标,从而获得子矩阵。end表示某一维的末尾元素下标。 利用空矩阵删除矩阵的元素: 在MATLAB中,定义[]为空矩阵。给变量X赋空矩阵的语句为X=[]。注意,X=[]与clear X不同,clear是将X从工作空间中删除,而空矩阵则存在于工作空间中,只是维数为0。 3、特殊矩阵 (1) 魔方矩阵魔方矩阵有一个有趣的性质,其每行、每列及两条对角线上的元素和都相等。对于n阶魔方阵,其元素由1,2,3,…,n2共n2个整数组成。MATLAB提供了求魔方矩阵的函数magic(n),其功能是生成一个n阶魔方阵。

相关主题
相关文档
最新文档