MATLAB数据,矩阵,字符串,逻辑量,多维矩阵,元胞,结构数组,数据格式

MATLAB数据

矩阵

类型

>> str=' i like drink '		%字符串

str =

    ' i like drink '

>> whos str
  Name      Size            Bytes  Class    Attributes

  str       1x14               28  char    

>> x1=[1:1:5 ;1:2:10 ] 		%from:step:to

x1 =

     1     2     3     4     5
     1     3     5     7     9

>> zeros(3,4)%特殊类型

ans =

     0     0     0     0
     0     0     0     0
     0     0     0     0

>> ones(2,3)

ans =

     1     1     1
     1     1     1

>> eye(2,3)

ans =

     1     0     0
     0     1     0


>> a=magic(3)

a =

     8     1     6
     3     5     7
     4     9     2

下标

>> a(1,2)%坐标,有 逗号

ans =

     1

>> a(1,1)

ans =

     8

>> a(5,5)=99

a =

     8     1     6     0     0
     3     5     7     0     0
     4     9     2     0     0
     0     0     0     0     0
     0     0     0     0    99

>> a(2)  %   向下数,单下标,无都好

ans =

     3

>> a(25)

ans =

    99


>> a(:,3)

ans =

     6
     7
     2
     0
     0

>> a(3,:)

ans =

     4     9     2     0     0

>> a([1 2],[1 3]) %交点

ans =

     8     6
     3     7

>> a([1 2],[1 2 3])

ans =

     8     1     6
     3     5     7


>> a(1:2,1:3)%范围 行,列

ans =

     8     1     6
     3     5     7

>> a(1:2,1:end)

ans =

     8     1     6     0     0
     3     5     7     0     0

>> m1=logical([1 1 1 1 0]);%逻辑矩阵
>> m2=logical([1 0 0 1 0])

m2 =

  1×5 logical 数组

   1   0   0    0   0

>> a(m1,m2)%行列

ans =

     8     
     3     
     4     
     0     

赋值


>> a=magic(3)

a =

     8     1     6
     3     5     7
     4     9     2

>> a(1:2,1:3)=[1 1 1; 1 1 1]%全下标赋值

a =

     1     1     1
     1     1     1
     4     9     2

>> a(5:6)=[55 66]%单下标赋值

a =

     1     1     1
     1    55     1
     4    66     2


>> a(:)=[1 2 3 4 5 6 7 8 9]

a =

     1     4     7
     2     5     8
     3     6     9

删除

>> a=magic(3)

a =

     8     1     6
     3     5     7
     4     9     2

>> a(3,:)=[]

a =

     8     1     6
     3     5     7

>> a(:,2:3)=[]

a =

     8
     3


合并

同字符串的第一种合并方式

字符串

合并

>> c=[a;a]

c =

     1     4     7
     2     5     8
     3     6     9
     1     4     7
     2     5     8
     3     6     9

>> b=[a a]

b =

     1     4     7     1     4     7
     2     5     8     2     5     8
     3     6     9     3     6     9

>> a='my name is';%字符串的第一种合并

a =

    'my name is'

>> b='待木成植'

b =

    '待木成植'

>> c=[a b]

c =

    'my name is待木成植'

>> d=[a ;b]%维度要一致
错误使用 vertcat
要串联的数组的维度不一致。

>> d=[a,b,a,b]

d =

    'my name is待木成植my name is待木成植'

>> str=strcat(a,b,a,b)

str =

    'my name is待木成植my name is待木成植'

处理

>> whos a
  Name      Size            Bytes  Class    Attributes

  a         1x10               20  char               

>> disp(a)
my name is

>> length(a)

ans =

    10

>> b=double(a)%字符串转换ASCII

b =17

   109   121    32   110    97   109   101810

    32   105   115

>> str1=char(b)%ASCII转换字符串

str1 =

    'my name is'

>> strcmp(str1,a)%比较连字符串是否相等

ans =

  logical

   1

>> strcmp(str1,b)

ans =

  logical

   0

>> findstr(str1,'name')%寻找字符串

ans =

     4


>> str2='2*3  '

str2 =

    '2*3  '

>> eval(str2)%执行字符串表达的命令

ans =

     6

>> deblank(str2)%删除末尾空格

ans =

    '2*3'

>> length(str2)

ans =

     5

>> a=ones(1,5)

a =

     1     1     1     1     1

>> str2+a

ans =

    51    43    52    33    33


逻辑量

逻辑运算时,再讲

多维矩阵

创建方法

>> a=[1 2;3 4]

a =

     1     2
     3     4

>> a(:,:,2)=[5,6;7 8]%扩展到三维

a(:,:,1) =

     1     2
     3     4


a(:,:,2) =

     5     6
     7     8

>> b=rand(2,2,2,2,2)%随机产生一个五维

b(:,:,1,1,1) =

    0.8147    0.1270
    0.9058    0.9134


b(:,:,2,1,1) =

    0.6324    0.2785
    0.0975    0.5469


b(:,:,1,2,1) =

    0.9575    0.1576
    0.9649    0.9706


b(:,:,2,2,1) =

    0.9572    0.8003
    0.4854    0.1419


b(:,:,1,1,2) =

    0.4218    0.7922
    0.9157    0.9595


b(:,:,2,1,2) =

    0.6557    0.8491
    0.0357    0.9340


b(:,:,1,2,2) =

    0.6787    0.7431
    0.7577    0.3922


b(:,:,2,2,2) =

    0.6555    0.7060
    0.1712    0.0318

>> a=[1 2;3 4]

a =

     1     2
     3     4

>> b=[1 1;2 2]

b =

     1     1
     2     2

>> c=cat(2,a,b)%二维

c =

     1     2     1     1
     3     4     2     2

>> d=cat(3,a,b)%三维

d(:,:,1) =

     1     2
     3     4


d(:,:,2) =


     1     1
     2     2

>> repmat(a,[2 3])%2*3的二维矩阵(a看作一个元素,repmat重复放置

ans =

     1     2     1     2     1     2
     3     4     3     4     3     4
     1     2     1     2     1     2
     3     4     3     4     3     4

>> repmat(a,[1 2 3])%1*2*3的三维矩阵

ans(:,:,1) =

     1     2     1     2
     3     4     3     4


ans(:,:,2) =

     1     2     1     2
     3     4     3     4


ans(:,:,3) =

     1     2     1     2
     3     4     3     4

>> reshape(a,[1 4])%重塑,1*4

ans =

     1     3     2     4

属性

>> a=eye(3)

a =

     1     0     0
     0     1     0
     0     0     1

>> ndims(a)%维度

ans =

     2

>> size(a)

ans =

     3     3

>> a(3,:)=[]

a =

     1     0     0
     0     1     0

>> ndims(a)%维度

ans =

     2

>> size(a)

ans =

     2     3

>> length(a)%返回某一维度,最长的 max(size(a))

ans =

     3

>> a=eye(3)

a =

     1     0     0
     0     1     0
     0     0     1

>> a(:,3)

ans =

     0
     0
     1

>> a(:,3)=[]

a =

     1     0
     0     1
     0     0

>> length(a)

ans =

     3

>> 

元胞

###创建


>> A={'This is a cell.', [1, 2; 3, 4],; rand(3), {'subcell', [1, 2, 3]}}%用大括号,手动输入

A =

  2×2 cell 数组

    {'This is a cell.'}    {2×2 double}
    {3×3 double       }    {1×2 cell  }

>> whos A
  Name      Size            Bytes  Class    Attributes

  A         2x2               844  cell               

>> B(1, 1)={'This is a cell'}%以元胞依次对元素赋值,生成元胞

B =

  1×1 cell 数组

    {'This is a cell'}

>> B(2, 1)=[2 3]
无法从 double 转换为 cell。
 
>> B(2, 1)={[2 3]}

B =

  2×1 cell 数组

    {'This is a cell'}
    {1×2 double      }

>>  C{1, 1}='This is a cell'%用大括号,创建各元胞元素

C =

  1×1 cell 数组

    {'This is a cell'}

>> C{2, 1}=[1 2 3]

C =

  2×1 cell 数组

    {'This is a cell'}
    {1×3 double      }

显示元胞

>> C

C =

  2×1 cell 数组

    {'This is a cell'}
    {1×3 double      }

>> celldisp(C)%完全显示
 
C{1} =
 
This is a cell
 
 
C{2} =
 
     1     2     3

 >> cellplot(A)%效果如下图

在这里插入图片描述

获取内容


>> x1=C{2, 1}%提取

x1 =

     1     2     3

>>  x2=C{2,1}(1,2)%提取

x2 =

     2


>> celldisp(A)
 
A{1,1} =
 
This is a cell.
 
 
A{2,1} =
 
    0.2769    0.8235    0.9502
    0.0462    0.6948    0.0344
    0.0971    0.3171    0.4387

 
 
A{1,2} =
 
     1     2
     3     4

 
 
A{2,2}{1} =
 
subcell
 
 
A{2,2}{2} =
 
     1     2     3
>>  [x4 x5 x6]=deal(A{[1, 2, 4]})

x4 =

    'This is a cell.'


x5 =

    0.2769    0.8235    0.9502
    0.0462    0.6948    0.0344
    0.0971    0.3171    0.4387


x6 =

  1×2 cell 数组

    {'subcell'}    {1×3 double}

结构数组

创建

>> student.name='Jim Green';
student.number=12345;
student.score=[85 90]

student = 

  包含以下字段的 struct:

      name: 'Jim Green'
    number: 12345
     score: [85 90]

>> student(2).name='Ann';
student(2).number=12346;
student(2).score=[80 85]

student = 

  包含以下字段的 1×2 struct 数组:

    name
    number
    score

获取结构数组内容

getfield(array, {array_index}, field, {field_index})
结构数组名 下标 域名 域中元素的下标

>> getfield(student, {1}, 'score', {2})

ans =

    90

添加or修改结构数组的域

setfield(array, {array_index}, field, {field_index})
结构数组名 结构的下标 域名 域中元素的下标

>>  student=setfield(student, {1}, 'weight', 70)

student = 

包含以下字段的 1×2 struct 数组:

 name
 number
 score
 weight
 

获取结构数组域名三种不同(getfield)

>> fieldnames(student)

ans =

  4×1 cell 数组

    {'name'  }
    {'number'}
    {'score' }
    {'weight'}

获取结构数组内容

>> student

student = 

  包含以下字段的 1×2 struct 数组:

    name
    number
    score
    weight

>> student(1)

ans = 

  包含以下字段的 struct:

      name: 'Jim Green'
    number: 12345
     score: [85 90]
    weight: 70

>> student(1).name

ans =

    'Jim Green'

数据格式

默认是五位长度
MATLAB 命令 &含 义 &范 例
format short
format short e
format long
format long e
format rat
format hex
format bank
短格式
短格式科学格式
长格式
长格式科学格式
有理格式
十六进制格式
银行格式
3.1416
3.1416e+000
3.141592653589793S
3.141592653589793e+000
355/113
400921fb54442d18
3.14

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值