• 4.matlab基础


    1  函数句柄

    1 clear all;
    2 f1=@cos
    3 t=0:pi/5:pi
    4 f1(t)
    5 f2=@complex
    6 f2(3,4)
     1 clear all
     2 %函数句柄
     3 f1=@char
     4 %函数句柄转换为字符串
     5 s1=func2str(f1)
     6 %字符串转换为函数句柄
     7 f2=str2func(s1)
     8 %f1的类型
     9 functions(f1)
    10 %判断f1是不是函数句柄
    11 isa(f1,'function_handle')
    12 %判断f1,f2是否是同一个函数
    13 isequal(f1,f2)

    2  单元数组类型

      单元数组是一种比较特殊的数据类型,每个元素都以单元的形式存在.在MATLAB中,采用大括号({})建立单元数组,也可以采用函数cell()来建立单元数组.在获取单元数组的元素时,也采用大括号表示下标.

    函数cell() 建立单元数组
    clear all
    %建立一个两行三列的单元数组
    c = cell(2,3)
    c{1,1}=[1:3;3:5]
    c{2,2}='China'
    c{2,3}='Robin'
    c{2,1}=100'
    View Code
    函数celldisp() 显示单元数组的内容
    clear all
    c={eye(2),'China';[1:4],100}
    %显示单元数数组的内容
    celldisp(c)
    %显示的时候改成另外一个名字
    celldisp(c,'mycell')
    View Code
    函数cellplot() 以彩色的图形来显示
    1 clear all
    2 c={'中国','China';[1:4],100}
    3 figure
    4 out = cellplot(c,'legend')
    View Code
    函数iscell()和函数num2cell() 判断是不是单元数组,矩阵转换为单元数组
    1 clear all
    2 a=[2.3 4.5 9.2;3.5 3.2 8.5]
    3 c=num2cell(a)           %将矩阵转换为单元数组
    4 iscell(a)
    5 iscell(c)
    View Code
    函数cell2struct() 单元数组转化为结构体变量
    1 clear all
    2 c={'Dr. Chi',1.80,20110001,[89 90 96]}
    3 fields={'name','height','num','score'}
    4 %单元数组转化为一个结构体变量
    5 s=cell2struct(c,fields,2)
    View Code
    1 clear all
    2 c={'中国','China';[1 2 3 4 5],100}
    3 %获取元素
    4 c{1,1}
    5 c{2,1}
    6 %输出一个元素
    7 c{2,2}=[]

    2.1  单元数组的删除与合并

     1 clear all
     2 c={'中国','China';[1:4;2:5],10}
     3 %单元数组的扩充
     4 c{2,4}=100
     5 %第一行元素
     6 c(1,:)
     7 %删除第三列
     8 c(:,3)=[]
     9 d={'北京','Beijing';[],3}
    10 %单元数组的合并
    11 e=[c,d]
    12 %删除第二行
    13 e(2,:)=[]

     3  结构体类型

      结构体是按照成员变量名组织起来的不同数据类型数据的集合.结构体类似C语言的结构体数据.每个成员变量用指针操作符"."表示,列如A.name表示结构体变量A的name成员变量.

    函数 说明 代码示例
    struct 建立结构体变量
    clear all;
    %前面是变量,后面{}中的是值
    s1= struct('type',{'big','little'},'color',{'red'},'data',{[1 2 3;2 3 4]})
    s1(1)
    s1(2)
    View Code
    istruct 是否为结构体变量  
    clear all;
    s=struct('one',1,'two',2)
    %判断是否是结构体变量
    f1=isstruct(s)
    %判断one是否是s的成员变量
    f2=isfield(s,'one')
    f3=isfield(s,'three')
    f4=isfield(s,{'one','pi','Two','three'})
    View Code
    isfield 是否为结构体成员  
    clear all;
    s=struct('one',1,'two',2)
    %判断是否是结构体变量
    f1=isstruct(s)
    %判断one是否是s的成员变量
    f2=isfield(s,'one')
    f3=isfield(s,'three')
    f4=isfield(s,{'one','pi','Two','three'})
    View Code
    fieldnames 结构体变量成员的名字  
    clear all;
    s=struct('one',1,'two',2,'three',3,'four',4)
    %获取成员变量的名字
    f1=fieldnames(s)
    %对结构体变量的成员变量的字母顺序进行排序
    f2=orderfields(s)
    View Code
    substruct 子结构体  
    struct2cell 结构体变量转换为单元型变量  
    1 clear all;
    2 s(1).name='Robin'
    3 s(1).sex='Male'
    4 s(1).num=20110001
    5 s(1).room=203
    6 s(2).name='Tom'
    7 s
    8 %结构体变量转换成单元数组
    9 c=struct2cell(s)
    View Code
    orderfield 对结构体变量的成员排序  
    clear all;
    s=struct('one',1,'two',2,'three',3,'four',4)
    %获取成员变量的名字
    f1=fieldnames(s)
    %对结构体变量的成员变量的字母顺序进行排序
    f2=orderfields(s)
    View Code
    getfield 得到结构体的成员变量  
     1 clear all;
     2 s1=struct('one',1,'two',2)
     3 %改变结构体中一个变量的值
     4 f1=getfield(s1,'one')
     5 
     6 %创建一个结构体
     7 s2=struct('name',{'Robin','Tom'},'sex',{'Male','Male'},'score',[100 99])
     8 %获取一个变量的值(第一行第二列)
     9 f2=getfield(s2,{1,2},'name')
    10 %也可以直接获取
    11 f3=s2(1,2).name
    12 
    13 %获取变量的值
    14 f4=getfield(s2,{1,2},'score',{2})
    15 f5=s2(1,2).score(2)
    View Code
    setfield 设置结构体的成员变量  
    rmfield 删除结构体的成员变量  
    clear all;
    %前面是变量,后面{}中的是值
    s1= struct('type',{'big','little'},'color',{'red'},'data',{[1 2 3;2 3 4]})
    s2=rmfield(s1,'color')
    s3=rmfield(s1,{'type','color'})
    View Code
    cell2struct 单元型变量转换为结构体变量  

    3.1  直接建立结构体变量

    1 clear
    2 stu(1).name='zhang san'
    3 stu(1).age=28
    4 stu(1).gender='Male'
    5 stu(2).name='li si'
    6 stu(2).age=29
    7 stu
    8 stu(1)

     4  运算符

      MATLAB提供的基本算术运算有:+  -   *   /   ^常用的算术运算符有如下所示.对于标量和数组,是以元素为单位进行运算.

    标量和数组运算 j矩阵运算 g功能
    + +
    - -
    .* *
    ./ / 左除
    . 右除
    .^ ^ 乘方
    .' ' 转置

    5  关系运算

    关系运算符 s说明 h函数
    < 小于 lt
    <= 小于等于 le
    > 大于 gt
    >= 大于等于 ge
    == 恒等于 eq
    ~= 不等于 ne
     1 clear all;
     2 a=3>2
     3 %三行四列的矩阵
     4 b1=rand(3,4)
     5 %大于0.5
     6 b2=b1>=0.5
     7 %小于等于0.8
     8 b3=b1<=0.8
     9 %b2 b3相等的部分
    10 c1=eq(b2,b3)
    11 %b2 b3不等的部分
    12 c2=b2~=b3

    5.1  比较两个浮点数

    1 clear all
    2 format long
    3 a=3.14159+eps
    4 b=3.14159
    5 c1=a==b
    6 c2=a>b
    7 c3=abs(a-b)<1e-10
    8 format short

    6  逻辑运算符

    6.1  逐个逻辑运算

      在MATLAB中,逻辑运算分为3类,分别是逐个元素的逻辑运算,快速逻辑运算和逐位逻辑运算.逐个元素的逻辑运算有3种,分别是逻辑与&,逻辑或和逻辑非(~).在进行两个数组或句子的逻辑与和逻辑或时,必须具有相同的维数.

                                                                       逐个逻辑运算

    运算符 h函数 s说明
    & and l逻辑与
    | or 逻辑或
    ~ not 逻辑非
      xor 逻辑异或
     1 clear all
     2 A=rand(3,4)
     3 B=A>0.6
     4 C=A<0.4
     5 % 6 d1=B&C
     7 % 8 d2=B|C
     9 %10 d3=~B
    11 %异或
    12 d4=xor(B,C)

    6.2  快速逻辑运算 

     在MATLAB中,有两个快速逻辑运算符,逻辑与(&&)和逻辑或(||).&&运算符和&运算符非常相近.&&运算符在参与运算的第一个操作数为假时,直接返回假,不再返回第二个操作数,||操作数,在参与运算的第一个操作数返回真时,直接返回真,不再判断第二个操作数

    快速逻辑运算
    运算符 说明
    && 快速逻辑与,当第一个操作数为假时,直接返回假,否则和&相同
    || 快速逻辑或,当第一个操作数为真时,直接返回真,否则和|相同
    1 clear all
    2 a=0
    3 (a>0)&&(3/a>0)  %快速逻辑与
    4 (a>0)&(3/a>2)   %逻辑与

    6.3  逐位逻辑运算

    逐位逻辑运算
    函数 函数说明
    bitand(a,b) 逐位逻辑与
    bitor(a,b) 逐位逻辑或
    bitcmp(a,b) 逐位逻辑非
    bitxor(a,b) 逐位逻辑异或
     1 clear all
     2 a=20
     3 b=23
     4 %十进制数转换为二进制
     5 c1=dec2bin(a)
     6 c2=dec2bin(b)
     7 
     8 %位与
     9 d1=bitand(a,b)
    10 d2=dec2bin(bitand(a,b))
    11 
    12 %位或运算
    13 d3=dec2bin(bitor(a,b))
    14 d4=dec2bin(bitxor(a,b))
  • 相关阅读:
    【OpenCv/EmguCv】指针式仪表读数(二)
    合天网安实验室CTF练习赛之RE300
    Codeforces Round #527 -A. Uniform String(思维)
    CodeForces
    CodeForces
    CodeForces
    CodeForces
    CodeForces
    CodeForces
    CodeForces
  • 原文地址:https://www.cnblogs.com/xiaochi/p/8880051.html
Copyright © 2020-2023  润新知