%例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)