Matlab基础学习------------数组和矩阵
来源:互联网 发布:长岛的雪 知乎 编辑:程序博客网 时间:2024/04/29 00:18
列举了数组和矩阵最常用的函数,并对函数进行了详细的介绍,有点长。。。。
想查看某个函数可以在页面中Ctrl+F进行搜索。。。
%% 数组和矩阵%%%一维数组的创建% 冒号生成法x=1:10 %默认步长为1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% x =% 1 2 3 4 5 6 7 8 9 10%定数线性采样法 :设定总元素个数和元素的取值范围,均匀采样生成一位数组%linspace()函数和logspace()函数%linspace(a,b,n) a和b分别为第一个和最后一个元素,n为元素的总个数%如果n=1则创建一个只含有b的数组,如果n省略则默认为100x=linspace(1,10,10) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%y=linspace(2,4,1) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% x =% 1 2 3 4 5 6 7 8 9 10% y =% 4%logspace(a,b,n) 与linspace类似,区别为:% linspace()函数创建的数组范围为a~b 等效于x=a:(b-1)/(n-1):b% logspace()函数范围为10^a--10^b 等效于x=10^a : 10^[(b-1)/(n-1)] :10^bx=logspace(1,2,5) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%y=logspace(2,4,1) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% x =% 10.0000 17.7828 31.6228 56.2341 100.0000% y =% 10000%%%数组访问(只说感觉有点特殊的)x=1:10x([1,3,5,7,9]) %访问数组x的第1,3,5,7,9个元素 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% x =% 1 2 3 4 5 6 7 8 9 10% ans =% 1 3 5 7 9x(9:end) %访问第9到最有一个元素 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% ans =% 9 10 x(linspace(2,5,4)) %访问x 的第2,3,4,5个元素 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% ans =% 2 3 4 5%%%二维数组的访问% A(:,j) 表示访问A的第j列元素A=magic(3)A(:,2) %访问第2列 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% A =% 8 1 6% 3 5 7% 4 9 2% ans =% 1% 5% 9 %A(i,:) 访问A的第i行元素A=magic(3)A(1,:) %访问第1行 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% A =% 8 1 6% 3 5 7% 4 9 2% ans =% 8 1 6% A(2:4,3:5)表示访问A的2-4行和3-5列元素A=[1 1 2 2 3 3;4 4 5 5 6 6;7 7 8 8 9 9;0 0 1 2 3 4]A(2:4,3:5) %访问A的2-4行和3-5列元素 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% A =% 1 1 2 2 3 3% 4 4 5 5 6 6% 7 7 8 8 9 9% 0 0 1 2 3 4% ans =% 5 5 6% 8 8 9% 1 2 3% A(:,:)表示访问A的所有元素A=magic(4)A(:,:) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% A =% 16 2 3 13% 5 11 10 8% 9 7 6 12% 4 14 15 1% ans =% 16 2 3 13% 5 11 10 8% 9 7 6 12% 4 14 15 1%% 二维数组的赋值A=[1 1 2 2 3 3;4 4 5 5 6 6;7 7 8 8 9 9;0 0 1 2 3 4]A(3,5) %访问第三行第五列的元素 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% A =% 1 1 2 2 3 3% 4 4 5 5 6 6% 7 7 8 8 9 9% 0 0 1 2 3 4% ans =% 9a=A(1:3,[1 3]) %将第1,2,3行和第1列、第3列的元素赋给a %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% a =% 1 2% 4 5% 7 8 A(:)=2:25 %对数组重新赋值 注意:赋值的元素个数必须相同 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% A =% 2 6 10 14 18 22% 3 7 11 15 19 23% 4 8 12 16 20 24% 5 9 13 17 21 25%% 数组运算的常用函数%随机构件数组函数rand()rand(5) %生成n*n的随机数组 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% ans =% 0.8147 0.0975 0.1576 0.1419 0.6557% 0.9058 0.2785 0.9706 0.4218 0.0357% 0.1270 0.5469 0.9572 0.9157 0.8491% 0.9134 0.9575 0.4854 0.7922 0.9340% 0.6324 0.9649 0.8003 0.9595 0.6787rand(2,4) % rand(m,n,p,q,r...)生成m*n*p*q*r*...的随机数组 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% ans =% 0.7577 0.3922 0.1712 0.0318% 0.7431 0.6555 0.7060 0.2769%获取数组长度函数size()%size(x) 获取数组x 各维的长度%size(x,dim) 获取数组x第dim维的长度x=rand(2,3,4)size(x) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%size(x,3) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% x(:,:,1) =% 0.0462 0.8235 0.3171% 0.0971 0.6948 0.9502% x(:,:,2) =% 0.0344 0.3816 0.7952% 0.4387 0.7655 0.1869% x(:,:,3) =% 0.4898 0.6463 0.7547% 0.4456 0.7094 0.2760% x(:,:,4) =% 0.6797 0.1626 0.4984% 0.6551 0.1190 0.9597% ans =% 2 3 4% ans =% 4%获取数组元素总数的函数numel()x=rand(3,5)numel(x) %获取x的总元素数 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%numel(x,2,:) %获取数组第2行元素的总数 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%numel(x,2,3) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% ans =% 15% ans =% 5% ans =% 1%获取数组指定维度的长度的函数length()%length()函数返回指定数组的最长维度的长度x=rand(2,6)length(x) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% x =% 0.8143 0.9293 0.1966 0.6160 0.3517 0.5853% 0.2435 0.3500 0.2511 0.4733 0.8308 0.5497% ans =% 6%获取数组平均值的函数mean(x,dim) dim维x=[1 2 3;4 5 6;7 8 9]mean(x) %省略了dim则dim为1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% x =% 1 2 3% 4 5 6% 7 8 9% ans =% 4 5 6 mean(x,1) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% ans =% 4 5 6mean(x,2) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% ans =% 2% 5% 8%reshape()函数 利用现有数组构建新的数组 按照列的顺序去除x的元素,再将取出的元素按照列的顺序赋值给新的数组%reshape(x,m,n,p,q...) 利用数组x的值构建m*n*p*q*...的数组x=[1 2 3 4 5 6 7 8]reshape(x,2,4) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%reshape(x,4,2) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% x =% 1 2 3 4 5 6 7 8% ans =% 1 3 5 7% 2 4 6 8% ans =% 1 5% 2 6% 3 7% 4 8%% Matlab中的特殊矩阵%零矩阵 zeros(m,n,p,...)zeros(3) %创建3*3的零矩阵 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% ans =% 0 0 0% 0 0 0% 0 0 0zeros(2,3) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% ans =% 0 0 0% 0 0 0 % 创建数组元素全为1的矩阵ones(m,n,p...)ones(2,2) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% ans =% 1 1% 1 1% 单位矩阵eye(n) eye(m,n)eye(3) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%eye(3,5) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% ans =% 1 0 0% 0 1 0% 0 0 1% ans =% 1 0 0 0 0% 0 1 0 0 0% 0 0 1 0 0% 创建对角矩阵diag()%diag(vector,k) 利用vector创建矩阵%参数说明:vector为向量,k为整数,创建一个以vector为对角线的矩阵%当vector为主对角线时k=0,可以省略,省略时默认为0;% 当vector为主对角线的上一条对角线时k=1% 当vector为主对角线的下一条对角线时k=-1 以此类推vector=[1 2 3 4];diag(vector,0) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ans =% 1 0 0 0% 0 2 0 0% 0 0 3 0% 0 0 0 4diag(vector,1) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ans =% 0 1 0 0 0% 0 0 2 0 0% 0 0 0 3 0% 0 0 0 0 4% 0 0 0 0 0diag(vector,-2) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ans =% 0 0 0 0 0 0% 0 0 0 0 0 0% 1 0 0 0 0 0% 0 2 0 0 0 0% 0 0 3 0 0 0% 0 0 0 4 0 0% diag(matrix,k) 获取matrix的对角线元素%参数说明:matrix为被提取的矩阵,k为整数% 返回一个向量,值为matrix的对角线,k的取值与diag(vector,k)相同matrix=[1 2 3; 4 5 6; 7 8 9]diag(matrix,0) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%diag(matrix,-1) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%diag(matrix,2) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% matrix =% 1 2 3% 4 5 6% 7 8 9% ans =% 1% 5% 9% ans =% 4% 8% ans =% 3%% 其他创建矩阵的函数(不一一列举实例了)% wilkinson() 生成Wilkison特征值的测试矩阵% gallery() 生成Higham矩阵% hadamard()生成Hadamard矩阵% hankel() 生成Hankel矩阵% hilb() 生成Hilbert矩阵% pascal() 生成帕斯卡矩阵% rosser() 生成经典对称特征值测试矩阵% toeplitz() 生成Toeplitz矩阵% vander() 生成范德蒙矩阵%% 矩阵的拼接% cat()函数和repmat()函数将多个或者单个小矩阵拼接成一个大矩阵% cat(n,arr1,arr2,arr3,...)% 说明:arr1,arr2...表示进行拼接的数组及其拼接的次序% n表示拼接的方式,n=1表示纵向拼接,n=2横向拼接,n>2时表示拼接为高维数组% 注意:cat()函数纵向拼接时保证拼接的矩阵有相等的列宽;横向拼接时保证有相等的行宽a=[6 5 4;3 2 1]b=[1:3;4:6]% a =% 6 5 4% 3 2 1% b =% 1 2 3% 4 5 6cat(1,a,b) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ans =% 6 5 4% 3 2 1% 1 2 3% 4 5 6cat(2,a,b) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ans =% 6 5 4 1 2 3% 3 2 1 4 5 6cat(3,a,b) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ans(:,:,1) =% 6 5 4% 3 2 1% ans(:,:,2) =% 1 2 3% 4 5 6% repmat(A,[m,n,p...]) 矩阵拼接% 说明:利用A构建新的数组,新数组为A在各维依次重复m,n,p...次构成% 只提供m,n时表示在行(向下)和列(向右)方向重复的次数,其他的以此类推% 只提供m,n时[]可以省略:repmat(A,m,n)A=[1 2; 3 4]repmat(A,2,2) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% A =% 1 2% 3 4% ans =% 1 2 1 2% 3 4 3 4% 1 2 1 2% 3 4 3 4repmat(A,[2,2,2]) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% ans(:,:,1) =% 1 2 1 2% 3 4 3 4% 1 2 1 2% 3 4 3 4% ans(:,:,2) =% 1 2 1 2% 3 4 3 4% 1 2 1 2% 3 4 3 4%% 高维数组操作% 提取矩阵右上三角形区域内的元素并赋予新矩阵的函数triu()% triu(X) 提取矩阵主对角线右上方的三角形区域内的元素% triu(X,k) 提取第k根对角线右上方的三角形区域的元素% 构造新矩阵的其余位置为0X=[1:4;5:8;9:12]% X =% 1 2 3 4% 5 6 7 8% 9 10 11 12triu(X) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ans =% 1 2 3 4% 0 6 7 8% 0 0 11 12triu(X,1) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ans =% 0 2 3 4% 0 0 7 8% 0 0 0 12triu(X,-2) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ans =% 1 2 3 4% 5 6 7 8% 9 10 11 12% 提取矩阵左下三角形区域内的元素并赋予新矩阵的函数tril()% 使用方法跟triu()类似% 矩阵的翻转函数% 包括水平翻转,垂直翻转和特定轴翻转% flipud(x) 水平翻转x=[1:4;5:8;9:12]% x =% 1 2 3 4% 5 6 7 8% 9 10 11 12flipud(x) %水平翻转 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ans =% 9 10 11 12% 5 6 7 8% 1 2 3 4fliplr(x) %垂直翻转 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ans =% 4 3 2 1% 8 7 6 5% 12 11 10 9% flipdim(x,dim) %将x按照特定的轴翻转,dim=1时按行翻转;dim=2时列;dim=3按页翻转;以此类推y=reshape([1:12],2,2,3)% y(:,:,1) =% 1 3% 2 4% y(:,:,2) =% 5 7% 6 8% y(:,:,3) =% 9 11% 10 12flipdim(y,3) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ans(:,:,1) =% 9 11% 10 12% ans(:,:,2) =% 5 7% 6 8% ans(:,:,3) =% 1 3% 2 4%矩阵的旋转函数rot90(x) 将制定的矩阵旋转90度x=[1:4;5:8;9:12]rot90(x) %逆时针旋转90度 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 结果% x =% 1 2 3 4% 5 6 7 8% 9 10 11 12% ans =% 4 8 12% 3 7 11% 2 6 10% 1 5 9% rot90(x,n) 其中x表示一个矩阵,n为正整数,默认为1.功能:将矩阵x逆时针旋转90*n度,形成新矩阵,x本身不变。rot90(x,4) %旋转360度相当于没旋转 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ans =% 1 2 3 4% 5 6 7 8% 9 10 11 12% 非数矩阵和空矩阵% 非数矩阵:用NaN或者nan来表示非数矩阵,NaN的产生是由于进行了0/0,0*无穷 无穷/无穷等操作% 性质:非数矩阵具有传递性:有NaN参与的运算结果也是NaN% 非数矩阵没有大小的概念,非数矩阵比较无意义% 非数矩阵的判断函数isnan(x)% isnan(x)返回一个与x相同规模的矩阵,其元素设置为:当该位置上的x元素为NaN时为1,否则为0% 空矩阵% 是指某维的长度或者若干维的长度为0的矩阵为空矩阵;可以用[]来设置空矩阵,也可以用空矩阵对数组进行裁剪% isempty(x)来判断x是否为空矩阵b=ones(2,0)isempty(b) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% b =% Empty matrix: 2-by-0% ans =% 1c=[1 2 3;4 5 6]c(:,2)=[] %将矩阵c的第2列设置为空,即进行裁剪操作 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% c =% 1 2 3% 4 5 6% c =% 1 3% 4 6%% 矩阵运算% 加法和减法 直接用+ -表示% 可以使用A+B*i的形式创建复数矩阵A=[1:4;5:8]B=[3:6;7:10]A+B*i %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% A =% 1 2 3 4% 5 6 7 8% B =% 3 4 5 6% 7 8 9 10% ans =% 1.0000 + 3.0000i 2.0000 + 4.0000i 3.0000 + 5.0000i 4.0000 + 6.0000i% 5.0000 + 7.0000i 6.0000 + 8.0000i 7.0000 + 9.0000i 8.0000 +10.0000i%乘法 矩阵乘法用 .* 或者 * 表示% 数组乘法用 .*表示A=[1 2 3]B=[4 5 6]A.*B %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% A =% 1 2 3% B =% 4 5 6% ans =% 4 10 18 % 矩阵的普通乘法 *A=[1 2;3 4]B=[5 6;7 8]A*B %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% A =% 1 2% 3 4% B =% 5 6% 7 8% ans =% 19 22% 43 50% 矩阵的Kronecker乘法% kron(A,B)A=[1 2;3 4]B=[1 1 1;2 2 2]kron(A,B) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果 A(1,1)*B A(1,2)*B A(2,1)*B A(2,2)*B% A =% 1 2% 3 4% B =% 1 1 1% 2 2 2% ans =% 1 1 1 2 2 2% 2 2 2 4 4 4% 3 3 3 4 4 4% 6 6 6 8 8 8% 矩阵除法% 用 ./ .\ / \ 表示%元素除法 ./ .\ 分别代表矩阵的左除和右除a=[1 2 3 4]b=[4 3 2 1]a./b %a除以b %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 结果% a =% 1 2 3 4% b =% 4 3 2 1% ans =% 0.2500 0.6667 1.5000 4.0000a=[1 2 3 4]b=[4 3 2 1]a.\b %b除以a %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% a =% 1 2 3 4% b =% 4 3 2 1% ans =% 4.0000 1.5000 0.6667 0.2500% 一般除法 / \ 左除和右除% 逆矩阵的创建inv(x)函数% a/b=a*inv(b) a\b=inv(a)*ba=[1 2 ; 3 4]b=[4 3 ; 2 1]a/b %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%a\b %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% a =% 1 2% 3 4% b =% 4 3% 2 1% ans =% 1.5000 -2.5000% 2.5000 -3.5000% ans =% -6.0000 -5.0000% 5.0000 4.0000% 转置和共轭% 非转置共轭 .' transpose()函数a=reshape([1:8],2,4)a.' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%transpose(a) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% a =% 1 3 5 7% 2 4 6 8% ans =% 1 2% 3 4% 5 6% 7 8% ans =% 1 2% 3 4% 5 6% 7 8% 共轭转置 ' .' 实数矩阵非共轭和共轭转置方式结果相同,复数不同a=[1 2 ; 3 4];b=[4 3 ; 2 1];c=a+b*ic.' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%c' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 结果% c =% 1.0000 + 4.0000i 2.0000 + 3.0000i% 3.0000 + 2.0000i 4.0000 + 1.0000i% ans =% 1.0000 + 4.0000i 3.0000 + 2.0000i% 2.0000 + 3.0000i 4.0000 + 1.0000i% ans =% 1.0000 - 4.0000i 3.0000 - 2.0000i% 2.0000 - 3.0000i 4.0000 - 1.0000i%元素操作函数% 指数函数 exp() expm()% exp(A) 以e为底分别以A的元素为指数求幂A=[1 2;3 4]exp(A) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% A =% 1 2% 3 4% ans =% 2.7183 7.3891% 20.0855 54.5982 %expm(A) 以e为底分别以A的元素为指数求幂,A必须是行列数相等的矩阵A=[1 2;3 4]expm(A) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 结果% A =% 1 2% 3 4% ans =% 51.9690 74.7366% 112.1048 164.0738%对数函数% log(A) 对A的各个元素进行对数运算 % logm(A) 对A正体取对数%开平方函数 sqrt(A) sqrtm(A)类似%矩阵的乘方与函数%矩阵的一般乘方A=[1 2;3 4]A^2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2^A %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% A =% 1 2% 3 4% ans =% 7 10% 15 22% ans =% 10.4827 14.1519% 21.2278 31.7106%矩阵的元素乘方 .^A=[1 2;3 4]B=[4 3;2 1]A.^B %表示A中的元素各自自乘了n次,n的值为B中对应位置的值 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%结果% A =% 1 2% 3 4% B =% 4 3% 2 1% ans =% 1 8% 9 4
3 0
- Matlab基础学习------------数组和矩阵
- MATLAB矩阵和数组
- Matlab矩阵和数组
- Matlab--矩阵和数组
- Matlab矩阵和数组运算
- MATLAB之数组和矩阵
- Matlab基础学习------架构数组
- Matlab矩阵操作基础,学习笔记...
- Matlab学习笔记一:矩阵基础
- Matlab软件的矩阵和数组操作
- [Matlab]基础教程学习笔记(一):基础和设置和矩阵教程
- MATLAB 7.0 学习入门 -- (练习二 矩阵和数组基本操作)
- MATLAB学习笔记之-----数组、矩阵、向量索引和逻辑索引
- R学习-- 数组和矩阵
- matlab 数组与矩阵
- matlab 数组 向量 矩阵
- Matlab数组、矩阵技巧
- matlab---数组、矩阵
- 注意
- 实例学习gcc+gdb+make
- Hadoop对输入文件划分(InputFormat)
- 机房收费系统(一)——组合查询
- 学习FPGA的网站推荐
- Matlab基础学习------------数组和矩阵
- 《数据结构实验4》--查找
- 配置ssh公钥访问oschina
- 超级楼梯
- 使用接插件需要注意的问题
- 软考---21天复习心得
- 35 求一个矩阵中最大的二维矩阵(元素和最大)
- Single Number
- Qt--常用控件认识(一)——tablewidget