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
原创粉丝点击