GUI学习

本文介绍了MATLAB中单元数组和结构数组的创建方法,包括内容创建、单元索引创建及函数创建。同时,详细阐述了如何通过赋值语句、cell()函数以及大括号直接创建单元数组。此外,还探讨了结构数组的特性,如通过字段名访问元素,并展示了如何创建、修改和删除结构数组的域。最后,提到了字符数组、字符串、函数句柄以及一些常用函数的使用方法。
摘要由CSDN通过智能技术生成

 

 

 单元数组、结构数组:将不同类型、不同维数的数组组合在一起。

在单元数组中,可以通过单元数组的名字是不能访问相应的元素,只能访问对应的索引号,类似于单元数组中存储的是指向某种数据结构的指针。

1.赋值语句创建:分为内容创建和单元索引创建

内容创建:一个一个元素进行创建,用大括号

c{1,1}=[1 2;3 4]
c{1,2}='oi'
d=c{1,1}
b=c{1,2}

<<

c =

  1×2 cell 数组

    {2×2 double}    {'oi'}


d =

     1     2
     3     4


b =

    'oi'

单元索引创建:一个一个单元进行创建,用小括号

c(1,1)={[1 2;3 4]}
c(1,2)={[1 2;3 4;2 14]}
c(2,1)={[]}
c(2,2)={'kolk'}
b=c(2,2)
f=c{2,2}

<<

c =

  2×2 cell 数组

    {2×2 double}    {3×2 double}
    {0×0 double}    {'kolk'    }


b =

  1×1 cell 数组

    {'kolk'}


f =

    'kolk'

2.cell()函数创建:

b=cell(2,3)

<<

b =

  2×3 cell 数组

    {0×0 double}    {0×0 double}    {0×0 double}
    {0×0 double}    {0×0 double}    {0×0 double}

赋值分为内容和单元创建两种方法

b(1,1)={[1;2;2]}

<<

b =

  2×3 cell 数组

    {3×1 double}    {0×0 double}    {0×0 double}
    {0×0 double}    {0×0 double}    {0×0 double}

3.用大括号直接创建并赋值:

b={[1;2;3],'ddff',[3;4;5];[4;5] [] []}

<<

b =

  2×3 cell 数组

    {3×1 double}    {'ddff'    }    {3×1 double}
    {2×1 double}    {0×0 double}    {0×0 double}

数组的显示:

1、celldisp():全部整体显示单元数组的细节内容

2、cellplot():以图形方式展示

celldisp(b)
cellplot(b)               红色表示占用内存,白色相反。

二、结构数组:

普通数组和单元数组只能通过下标访问数组元素,而结构数组是元素带名字的,也可以存储不同类型的元素,元素被称为域,数组名.域名可以用来访问结构数组的具体元素值

student(1).name='bob'
student(1).sex='man'
student(1).age='25'
student(1).score=[98 99 100]
student(2).name='plimmer'
student(2).sex='man'
student(2).age='12'
student(2).score=[98]
student(3).name='liky'
student(3).sex='girl'
student(3).score=[98 99 97]

<<

student = 

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

    name
    sex
    age
    score


>> student.age

ans =

    '25'


ans =

    '12'


ans =

     []

>> student(2)

ans = 

  包含以下字段的 struct:

     name: 'plimmer'
      sex: 'man'
      age: '12'
    score: 98

struct():函数用来帮助定义一个结构数组

s = struct(field1,value1,...,fieldN,valueN)=sstruct(域名,值,域名,值,域名,值,。。。。)

student(1)=struct('name','bob','age','12','sex','man','score',[12 12 15])
student(2)=struct('name','plimmer','age','12','sex','man','score',[98 99 78])
student(3)=struct('name','liky','age','13','sex','girl','score',[98 58 99])

<<

student = 

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

    name
    sex
    age
    score


>> student(3)

ans = 

  包含以下字段的 struct:

     name: 'liky'
      sex: 'girl'
      age: '13'
    score: [98 58 99]

可以用rmfiled()函数去删除结构数组中的域名

s=rmfield(s,field)

student=rmfield(student,'age')

<<

student = 

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

    name
    sex
    score

 complex:用来生成复数

可以使用real和imag来提取一个复数的实部和虚部

 字符数组和字符串单元数组:

把字符放在一对单引号内,就定义了一个一维的字符数组

b='ojhb'

>> b='ojhb'

b =

    'ojhb'

[]创建多维字符数组时,必须保证每行都具有相同的长度,可以在短的字符串后面加上空格

c=['abc';'ab ']

<<

c =

  2×3 char 数组

    'abc'
    'ab '

strcat()函数可以实现字符串的横向连接

s1=('abc')
s2=('vbh')
s3=strcat(s1,s2)

函数句柄:提供了间接调用函数的方法

函数句柄=@函数名----@创建普通函数的句柄

函数句柄=@(输入参数)函数体---创建匿名函数的句柄

str2func函数将函数名字符串转化为函数句柄

matlabFunction函数用于将符号表达式转化为函数句柄

feval--用于计算函数

fh1=@sin
fh2=@(x)sin(x)
fh3=str2func('sin')

feval(fh1,pi/2)
[feval(fh1,pi/2),feval(fh2,pi/2),feval(fh3,pi/2)]

>>

ans =

     1


ans =

     1     1     1

在主函数中返回子函数句柄:

function out=mydiff(a,b)
    if (a>b)
         out=fuc1(a,b)
    else
         out=fuc1(b,a)
    end
end
function out=fuc1(a,b)
     out=a-b
end

>>

>> mydiff(3,5)

out =

     2


out =

     2


ans =

     2

 function x=plotSin(fhandle,data)
          plot(data,fhandle(data))
end

>>

>> t=-pi:0.01:pi;
plotSin(@sin,t)

 如果函数只用一次,则可以创建一个匿名函数的函数句柄进行替代:

plotsin=@(x)plot(x,sin(x))
t=-pi:0.01:pi
plotsin(t)

 匿名函数是一种没有函数名、只有函数句柄的特殊函数。

gettime=@()datestr(now)
t=gettime()

sqr=@(x) x.^2
b=sqr(20)

axby=@(x,y) (10*x+20*y)
z=axby(1,2)

>>
 

t =

    '01-Sep-2021 19:34:34'

b =

   400

z =

    50

使用函数句柄arrayfun:可以实现不同函数的批量运行

fun{1}=rand(3,6)
fun{2}=magic(12)
fun{3}=ones(5,20)
counts=arrayfun(@(x) numel(x{:}),fun)

>>

fun =

  1×3 cell 数组

    {3×6 double}    {12×12 double}    {5×20 double}


counts =

    18   144   100

>> date

ans =

    '01-Sep-2021'

>> clock

ans =

   1.0e+03 *

    2.0210    0.0090    0.0010    0.0190    0.0420    0.0204

 str=datestr(DT)

>> datestr(date)

ans =

    '01-Sep-2021'

>> datestr(now)

ans =

    '01-Sep-2021 19:43:58'

>> datestr(clock)

ans =

    '01-Sep-2021 19:44:05'

str=datestr(DT,dateform):转换串行日期数、日期向量或日期字符串DT为指定的日期格式。一般默认0

生成随机矩阵:

randi(10,3,4) 返回一个由介于 1 和 10 之间的伪随机整数组成的 3×4 数组

r = randi(10,5):返回一个介于1和10之间的伪随机整数组成的5x5数组

a=randi([0,1],100,5):产生一个随机矩阵:大小为5*100,元素为区间【0,1】的整数

随机产生10个12位的0、1二进制序列,要求每个序列中包含7个1和5个0:

N=10
data=randerr(N,12,7)
str=dec2bin(data)
str2=reshape(str,N,12)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一夕ξ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值