Matlab笔记-数组

一、结构数组的基本使用  

        结构体的定义即为C语言中结构体的初始化,其引用成员(在Matlab中为field,字段的意思)和C语言相同。

1、直接赋值

>> student(1).name='Silen';
student(1).id=1234;
student(1).grade=[1 2 3;4 5 6;7 8 9];
student(1).grade(2,2)     %输出成绩5

ans =

     5

        需要注意的是,进行赋值时需要对结构体做标量,即做标记,要不然就会出现下面这种情况,出现报错

>> student.grade=[2 3 4;5 6 7;8 9 0];
此赋值需要标量结构体。

2、用struct函数定义

>> A=[1 2 3 4];
>> B=struct('id',12324,'grade',A)

B = 

  包含以下字段的 struct:

       id: 12324
    grade: [1 2 3 4]

二、相关结构数组函数

1、fieldnames:展示结构体所有字段名

>> fieldnames(student)

ans =

  5×1 cell 数组

    {'you'  }
    {'id'   }
    {'gread'}
    {'name' }
    {'grade'}

2、getfield:得到结构体的相应字段

>> c=getfield(student,'id');
>> c

c =

        1234

3、isfield:判断字段是否是结构体内的字段

>> c=isfield(student,'ok')

c =

  logical

   0

>> c=isfield(student,'id')

c =

  logical

   1

4、isstruct:判断是否是结构体类型

>> A=struct('id',4567,'grade',[1 2 3;4 5 6;7 8 9]);
>> B=[1 2 3 4];
>> C=isstruct(A)

C =

  logical

   1

5、orderfields:对结构体的fields按字母顺序排序

>> A=struct('c',1234,'a',34,'b',56);
>> orderfields(A)

ans = 

  包含以下字段的 struct:

    a: 34
    b: 56
    c: 1234

6、rmfield:remove结构体中的field

>> rmfield(A,'a')

ans = 

  包含以下字段的 struct:

    c: 1234
    b: 56

7、setfield:用于更新结构体字段

>> setfield(A,'a',78)

ans = 

  包含以下字段的 struct:

    c: 1234
    a: 78
    b: 56

三、嵌套结构数组

>> A=struct('a',1234,'b',2345,'B',struct('c',5678,'d',6789))

A = 

  包含以下字段的 struct:

    a: 1234
    b: 2345
    B: [1×1 struct]

>> A.B.d

ans =

        6789

四、元胞数组

        元胞数组即是将成员数据按矩阵形式排列,数据部分用{}或者位置部分用{}都可

>> A(1,1)={[1 2 3;4 5 6]};
>> A(1,2)={'hello'};
>> A(2,1)={'world'};
>> A(2,2)={[2 3 4;5 6 7]};
>> A

A =

  2×2 cell 数组

    {2×3 double}    {'hello'   }
    {'world'   }    {2×3 double}

        那么如何查看cell arry中的数据呢

>> A(1,1)

ans =

  1×1 cell 数组

    {2×3 double}

>> A{1,1}

ans =

     1     2     3
     4     5     6

        可以看到,使用(1,1)只能看到数据类型,而用{1,1}才能展开数据

五、矩阵转换成元胞数组

1、使用num2cell函数

>> a=magic(3); 
>> b=num2cell(a)

b =

  3×3 cell 数组

    {[8]}    {[1]}    {[6]}
    {[3]}    {[5]}    {[7]}
    {[4]}    {[9]}    {[2]}

magic(n)函数的作用是生成一个n*n的矩阵,矩阵元素是由整数1到n^2组成的并且任何行任何列的和都相等,阶数n必须是大于等于3的标量

2、使用mat2cell函数

C = mat2cell(A,dim1Dist,...,dimNDist)

        mat3cell可将原矩阵沿维度划分为各个子数组,并共同组成一个元胞数组

>> c=mat2cell(a,[1 1 1],[1 2])

c =

  3×2 cell 数组

    {[8]}    {[1 6]}
    {[3]}    {[5 7]}
    {[4]}    {[9 2]}

六、多维数组

        多维数组是在row和column的基础上再加维度

 1、使用cat(n,A,B)函数

>> A=[1 2;3 4];
B=[5 6;7 8];
C=cat(1,A,B);
D=cat(2,A,B);
E=cat(3,A,B);
>> disp(C);
     1     2
     3     4
     5     6
     7     8

>> disp(D)
     1     2     5     6
     3     4     7     8

>> disp(E)

(:,:,1) =

     1     2
     3     4


(:,:,2) =

     5     6
     7     8

2、使用reshape(D,n,n,n)函数

>> reshape(D,2,2,2)

ans(:,:,1) =

     1     2
     3     4


ans(:,:,2) =

     5     6
     7     8

        对于reshape函数再提一句,它对矩阵做reshape的顺序是从row到column

>> F=[1 2 3;4 5 6];
>> f1=reshape(F,3,2)

f1 =

     1     5
     4     3
     2     6

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值