MATLAB学习 数组

数组对于MATLAB是非常重要的数据结构,数组运算是MATLAB完成计算的基础
因为在MATLAB中,所有数据!!都要以数组的形式被存储!!
数组的元素可以是任何数据类型,比如数值,字符串
矩阵是特殊的数组,一定要明白矩阵在MATLAB中也是以数组形式存储的

由于MATLAB是面向对象的,所以数值数组是最重要的内建数据类型

创建数组:

clear all
format compact  % 紧凑显示输出
a=[]
b=[1 2 3 4 5 6]
c=[1, 2, 3, 4, 5, 6]
d=[1;2;3;4;5;6;]
e=d'  % 转置
a =
     []
b =
     1     2     3     4     5     6
c =
     1     2     3     4     5     6
d =
     1
     2
     3
     4
     5
     6
e =
     1     2     3     4     5     6
>> 

或:

a=2:6
step=1.5
b=1.1:step:6.8
c=1.2:-step:-8
a =
     2     3     4     5     6
step =
    1.5000
b =
    1.1000    2.6000    4.1000    5.6000
c =
    1.2000   -0.3000   -1.8000   -3.3000   -4.8000   -6.3000   -7.8000

或:
logspace 以对数函数关系划分空间
在这里插入图片描述

linspace 线性划分空间 line space
在这里插入图片描述

clear all 
clc
format compact
format short
a=logspace(1,2)
b=logspace(1,2,10)
c=linspace(1,100)
d=linspace(1,40,3) 
e=linspace(1,20,1)
a =
  1 至 15 列
   10.0000   10.4811   10.9854   11.5140   12.0679   12.6486   13.2571   13.8950   14.5635   15.2642   15.9986   16.7683   17.5751   18.4207   19.3070
  16 至 30 列
   20.2359   21.2095   22.2300   23.2995   24.4205   25.5955   26.8270   28.1177   29.4705   30.8884   32.3746   33.9322   35.5648   37.2759   39.0694
  31 至 45 列
   40.9492   42.9193   44.9843   47.1487   49.4171   51.7947   54.2868   56.8987   59.6362   62.5055   65.5129   68.6649   71.9686   75.4312   79.0604
  46 至 50 列
   82.8643   86.8511   91.0298   95.4095  100.0000
b =
   10.0000   12.9155   16.6810   21.5443   27.8256   35.9381   46.4159   59.9484   77.4264  100.0000
c =
  1 至 25 列
     1     2     3     4     5     6     7     8     9    10    11    12    13    14    15    16    17    18    19    20    21    22    23    24    25
  26 至 50 列
    26    27    28    29    30    31    32    33    34    35    36    37    38    39    40    41    42    43    44    45    46    47    48    49    50
  51 至 75 列
    51    52    53    54    55    56    57    58    59    60    61    62    63    64    65    66    67    68    69    70    71    72    73    74    75
  76 至 100 列
    76    77    78    79    80    81    82    83    84    85    86    87    88    89    90    91    92    93    94    95    96    97    98    99   100
d =
    1.0000   20.5000   40.0000
e =
    20
>> 

访问数组:

>> b(1:4)
ans =
     1     2     3     4
>> b(2:end)
ans =
     2     3     4     5     6
>> c(end:-1:2)
ans =
     6     5     4     3     2
>> d([2 6])
ans =
     2
     6

这里可以看出MATLAB和python及大多数编程语言的区别,MATLAB的索引从1开始, 而大多数语言是从0 开始。且Python中访问end但不会输出end(python中用-1索引表示数组中最后一个元素)那个元素, 而matlab会输出最后一个元素

Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> x=np.arange(2,7)
>>> x[0]
2
>>> x[1:-1]
array([3, 4, 5])
>>> x
array([2, 3, 4, 5, 6])
>>>

修改元素:

>> b(4)=8
b =
     1     2     3     8     5     6
>> e([1 5])=[34 56]
e =
    34     2     3     4    56     6

数组的运算

+,-,./, .*分别是数组的加减乘除运算
全部需要A,B矩阵同维,得到的运算结果也是同维数组
左除和右除:A ./ B = B .\ A ,A是被除数
跟常数的乘除法:∗和.∗*和.*.一样,/和./一样

a=1:6
b=2:7
c=a.*b
d=b./a
e=a.\b
f=a*3
g=a.*3
h=a/2
k=a./2
a =
     1     2     3     4     5     6
b =
     2     3     4     5     6     7
c =
     2     6    12    20    30    42
d =
    2.0000    1.5000    1.3333    1.2500    1.2000    1.1667
e =
    2.0000    1.5000    1.3333    1.2500    1.2000    1.1667
f =
     3     6     9    12    15    18
g =
     3     6     9    12    15    18
h =
    0.5000    1.0000    1.5000    2.0000    2.5000    3.0000
k =
    0.5000    1.0000    1.5000    2.0000    2.5000    3.0000

乘方:

a=1:6
b=2:7
c=a.^2
d=a.^b
e=2.^a
a =
     1     2     3     4     5     6
b =
     2     3     4     5     6     7
c =
     1     4     9    16    25    36
d =
           1           8          81        1024       15625      279936
e =
     2     4     8    16    32    64

数组的点积运算,要求AB同维

a=1:6
b=2:7
c=dot(a,b)
e=sum(a.*b)
a =
     1     2     3     4     5     6
b =
     2     3     4     5     6     7
c =
   112
e =
   112
>> 

关系运算
在这里插入图片描述

a=1:6
b=2:7
c=a<4
d=a==b
e=a~=b

连括号都不用写!

a =
     1     2     3     4     5     6
b =
     2     3     4     5     6     7
c =
  1×6 logical 数组
   1   1   1   0   0   0
d =
  1×6 logical 数组
   0   0   0   0   0   0
e =
  1×6 logical 数组
   1   1   1   1   1   1
>> 

逻辑运算
在这里插入图片描述

逻辑运算只管元素是不是非零,只要非零就是1,否则就是0

a=0:5
b=2:7
b(2)=0
c=a&b
d=a|b
e=~a
a =
     0     1     2     3     4     5
b =
     2     3     4     5     6     7
b =
     2     0     4     5     6     7
c =
  1×6 logical 数组
   0   0   1   1   1   1
d =
  1×6 logical 数组
   1   1   1   1   1   1
e =
  1×6 logical 数组
   1   0   0   0   0   0
>> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值