matlab r2020a例题 2.1节 数据类型(下)

%例12 函数句柄的创建和调用

F_Handlea=@cos;%将'句柄F_Handlea'定义为cos函数。创建函数句柄

x=0:0.25*pi:2*pi;%从0到2pi,每次间隔0.25pi取一次值。

F_Handlea(x)%通过函数句柄调用函数cos

%例13 函数句柄的基本操作

F_Handlea=@exp;

F_Handleb=@log;%创建函数句柄

functions(F_Handlea);

functions(F_Handleb)%返回该函数句柄中存储的函数名称、类型以及M文件的位置

isa(F_Handleb,'function_handle')%检查F_Handleb是否是函数句柄

isequal(F_Handleb,F_Handlea)%检查这两个函数句柄是否是相同的

%例14 通过字段赋值创建结构体

Student.Name='expo';

Student.Grade=6;

Student.Subject={'Chinese' 'Math' 'Englisn'};

Student.Resulit={99,99,99};

Student%给结构体的每个字段单独赋值,然后输出结构体

whos%输出结构体类型

%例15 通过struct函数创建结构体

%1、创建只有一个元素的结构体

clear

clc

Schedual(3)=struct('Day','Thursday','Time','3:00','Winder','windy')%给结构体的第二个元素赋值

%注意字段名和变量都不能是中文,且都要加单引号。

%输出结果不显示结构体中具体含有什么,只是输出生成一个1*2的结构体

%通过改变()中的数,可以定义结构体的列数

Schedual(3)%结构体的第三个元素中有赋值故显示

Schedual(1)%结构体的第一个元素中没有赋值故不显示

%2、同时创建有相同元素的结构体

SchedualArray=repmat(struct('Day','Thursday','Time','3:00','Winder','windy'),1,2);%1*2的结构体,三个元素都是这个。

%1,2,3则是1*2*3立体数组,1,3是1*3数组

SchedualArray(1)

SchedualArray(2)

%3、同时创建不同元素的结构体

newArray=struct('Day',{'Thursday','Friday'},'Time',{'15:00','17:00'},'Number',{18,'16'})%各个元素可以不用单引号

newArray(1)

newArray(2)

%例16 创建等差数列

Array_a=0:5%默认0到5,差为1的数组

Array_b=linspace(0,5,6)%0到5一共6个数的等差数列

Array_b=linspace(0,5,0)%空的1*0行向量

%例17 创建空数组

Array_Empty=[]

%例18 创建元胞数组

clear

clc

C={'x',[1;3;6];10,pi}%空格和逗号分割单元,分号代表换行

whos C

%例19 创建空元胞数组

clear

a=cell(2,2)

b=cell(1)

whos

%例20 元胞数组的寻访

clear

c={3,[4 7;6 6;80 9],'string';sin(pi/8),3>10,'code'}

r=c(1,2)%c的单元(输出为1×1 cell 数组)

y=c{1,2}%c的具体内容

class(r)%输出r的类型为单元

class(y)%输出y的类型为双精度浮点数

%例21 元胞数组的合并

clear

a{1,1}='cellclass';

a{1,2}=[1 2 2];

a{2,1}=['a','b','c'];

a{2,2}=[9 5 6];

a

b={'Jan'}

c={a b}

%例22 元胞数指定单元的删除

clear

c={ones(3),'Hello,World',zeros(5),[20,4,6]}

c{1,4}=[]

%例23 元胞数组c(1*4)改为newc(4*1)

newc=reshape(c,4,1)

%例24 创建名为schedulemap的map对象储存课程表

clear

clc

schedulemap=containers.Map({'Monday','Tuesday','Wednesday','Thursday','Friday'},{'Maths','Chinese','Geography','Biology','History'})

%前面的花括号里面是 键key,后面的花括号里面是value

newMap=containers.Map()%为什么不对

%keys(newMap)={'Monsday','Tuesday','Wednesday','Thursday','Friday'}

%values(newMap)={'Math','Chinese','Geography','Biology','History'};

%newMap

%例25 查看例题24中创建的map对象

keys(schedulemap)

values(schedulemap)

%例26 查看例24中创建的对象中的内容

course=schedulemap('Wednesday')%查看一个键的值

values(schedulemap,{'Monday','Thursday'})%查看多个键对应的值

%例27 删除schedulemap中的'Thursday'及其对应的科目

schedulemap=containers.Map({'Monday','Tuesday','Wednesday','Thursday','Friday'},{'Maths','Chinese','Geography','Biology','History'})

remove(schedulemap,'Thursday')

keys(schedulemap)

values(schedulemap)

%例28 添加key/value对

schedulemap('Saterday')='Public elective course'

keys(schedulemap)

values(schedulemap)

%例29 修改key

remove(schedulemap,'Saterday');

schedulemap('Sunday')='MBA';

keys(schedulemap)

values(schedulemap)

%例30 修改value

schedulemap('Monday')='Englisn'

keys(schedulemap)

values(schedulemap)

%例12 函数句柄的创建和调用
F_Handlea=@cos;%将'句柄F_Handlea'定义为cos函数。创建函数句柄
x=0:0.25*pi:2*pi;%从0到2pi,每次间隔0.25pi取一次值。
F_Handlea(x)%通过函数句柄调用函数cos

%例13 函数句柄的基本操作
F_Handlea=@exp;
F_Handleb=@log;%创建函数句柄
functions(F_Handlea);
functions(F_Handleb)%返回该函数句柄中存储的函数名称、类型以及M文件的位置
isa(F_Handleb,'function_handle')%检查F_Handleb是否是函数句柄
isequal(F_Handleb,F_Handlea)%检查这两个函数句柄是否是相同的

%例14 通过字段赋值创建结构体
Student.Name='expo';
Student.Grade=6;
Student.Subject={'Chinese' 'Math' 'Englisn'};
Student.Resulit={99,99,99};
Student%给结构体的每个字段单独赋值,然后输出结构体
whos%输出结构体类型

%例15 通过struct函数创建结构体
%1、创建只有一个元素的结构体
clear
clc
Schedual(3)=struct('Day','Thursday','Time','3:00','Winder','windy')%给结构体的第二个元素赋值
%注意字段名和变量都不能是中文,且都要加单引号。
%输出结果不显示结构体中具体含有什么,只是输出生成一个1*2的结构体
%通过改变()中的数,可以定义结构体的列数
Schedual(3)%结构体的第三个元素中有赋值故显示
Schedual(1)%结构体的第一个元素中没有赋值故不显示

%2、同时创建有相同元素的结构体
SchedualArray=repmat(struct('Day','Thursday','Time','3:00','Winder','windy'),1,2);%1*2的结构体,三个元素都是这个。
%1,2,3则是1*2*3立体数组,1,3是1*3数组
SchedualArray(1)
SchedualArray(2)

%3、同时创建不同元素的结构体
newArray=struct('Day',{'Thursday','Friday'},'Time',{'15:00','17:00'},'Number',{18,'16'})%各个元素可以不用单引号
newArray(1)
newArray(2)

%例16 创建等差数列
Array_a=0:5%默认0到5,差为1的数组
Array_b=linspace(0,5,6)%0到5一共6个数的等差数列
Array_b=linspace(0,5,0)%空的1*0行向量

%例17 创建空数组
Array_Empty=[]

%例18 创建元胞数组
clear
clc
C={'x',[1;3;6];10,pi}%空格和逗号分割单元,分号代表换行
whos C

%例19 创建空元胞数组
clear
a=cell(2,2)
b=cell(1)
whos

%例20 元胞数组的寻访
clear 
c={3,[4 7;6 6;80 9],'string';sin(pi/8),3>10,'code'}
r=c(1,2)%c的单元(输出为1×1 cell 数组)
y=c{1,2}%c的具体内容
class(r)%输出r的类型为单元
class(y)%输出y的类型为双精度浮点数

%例21 元胞数组的合并
clear
a{1,1}='cellclass';
a{1,2}=[1 2 2];
a{2,1}=['a','b','c'];
a{2,2}=[9 5 6];
a
b={'Jan'}
c={a b}

%例22 元胞数指定单元的删除
clear
c={ones(3),'Hello,World',zeros(5),[20,4,6]}
c{1,4}=[]

%例23 元胞数组c(1*4)改为newc(4*1)
newc=reshape(c,4,1)

%例24 创建名为schedulemap的map对象储存课程表
clear
clc
schedulemap=containers.Map({'Monday','Tuesday','Wednesday','Thursday','Friday'},{'Maths','Chinese','Geography','Biology','History'})
%前面的花括号里面是 键key,后面的花括号里面是value
newMap=containers.Map()%为什么不对
%keys(newMap)={'Monsday','Tuesday','Wednesday','Thursday','Friday'}
%values(newMap)={'Math','Chinese','Geography','Biology','History'};
%newMap

%例25 查看例题24中创建的map对象
keys(schedulemap)
values(schedulemap)

%例26 查看例24中创建的对象中的内容
course=schedulemap('Wednesday')%查看一个键的值
values(schedulemap,{'Monday','Thursday'})%查看多个键对应的值

%例27 删除schedulemap中的'Thursday'及其对应的科目
schedulemap=containers.Map({'Monday','Tuesday','Wednesday','Thursday','Friday'},{'Maths','Chinese','Geography','Biology','History'})
remove(schedulemap,'Thursday')
keys(schedulemap)
values(schedulemap)

%例28 添加key/value对
schedulemap('Saterday')='Public elective course'
keys(schedulemap)
values(schedulemap)

%例29 修改key
remove(schedulemap,'Saterday');
schedulemap('Sunday')='MBA';
keys(schedulemap)
values(schedulemap)

%例30 修改value
schedulemap('Monday')='Englisn'
keys(schedulemap)
values(schedulemap)

课程参考来源https://www.bilibili.com/list/ml2229452720?spm_id_from=333.999.0.0&oid=512021483&bvid=BV1Eg411R7Zj&p=8

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值