美文网首页
matlab程序设计

matlab程序设计

作者: Acapella_Zhang | 来源:发表于2019-04-11 23:17 被阅读0次

    1.符号运算

    1.1创建符号对象

    • sym()
    • syms()
      其中syms()可以创建多个对象
    a=1/4;
    b='1/4';
    c=sym(1/4);
    d=sym('1/4');
    classa=class(a)
    classb=class(b)
    classc=class(c)
    classd=class(d)
    
    classa =
    
    double
    
    
    classb =
    
    char
    
    
    classc =
    
    sym
    
    
    classd =
    
    sym
    
    

    1.2 例子

    1. 计算积分
    syms A t tao w
     yf=int(A*exp(-i*w*t),t,-tao/2,tao/2)
    >>
    (2*A*sin((tao*w)/2))/w
    
    1. 计算矩阵行列式值,特征值,特征根
    • det() :计算行列式
    • inv() : 计算特征值
    • eig() : 计算特征根
     syms a11 a12 a21 a22
     A=[a11,a12;a21,a22]
     DA=det(A)
     IA=inv(A)
     EA=eig(A)
    >>
    DA =
     
    a11*a22 - a12*a21
     
     
    IA =
     
    [  a22/(a11*a22 - a12*a21), -a12/(a11*a22 - a12*a21)]
    [ -a21/(a11*a22 - a12*a21),  a11/(a11*a22 - a12*a21)]
     
     
    EA =
     
     a11/2 + a22/2 - (a11^2 - 2*a11*a22 + a22^2 + 4*a12*a21)^(1/2)/2
     a11/2 + a22/2 + (a11^2 - 2*a11*a22 + a22^2 + 4*a12*a21)^(1/2)/2
     
    
    1. 化简与展开
    • simpilify()
    syms fai1 fai2
    y=simplify(sin(fai1)*cos(fai2)-cos(fai1)*sin(fai2))
    
    >>
    y =
     
    sin(fai1 - fai2)
    
    y=sym('(x+1)^3')
     y=expand(y)
    
    >>
    y =
     
    x^3 + 3*x^2 + 3*x + 1
    
    1. 因式分解
    • factor()
    syms a x
    f1=x^4-5*x^3+5*x^2+5*x-6;factor(f1)
    f2=x^2-a^2;factor(f2)
    factor(1025)
    
    >>
    ans =
     
    [ x - 1, x - 2, x - 3, x + 1]
     
     
    ans =
     
    [ -1, a - x, a + x]
     
    
    ans =
    
         5     5    41
    

    2. 分支结构

    2.1if分支

    clear
    a=100;
    b=20; 
    if a<b 
       fprintf ('b>a')          % 在Word中输入’b>a’单引号不可用,要在Editor中输入
    else 
       fprintf ('a>b')          % 在Word中输入’b>a’单引号不可用,要在Editor中输入
    end
    

    2.2 switch分支

     clear
    n=input('输入n=');         % 输入n值
    switch mod(n,5)            % mod是求余函数,余数为0,得0,余数不为0,得1
    case 0
       fprintf ('%d是5的倍数',n) 
    otherwise
       fprintf('%d不是5的倍数',n)
    end
    
    

    3.循环语句

    3.1 while循环

     clear
    x=0;                  % 初始化变量x
    sum=0;                % 初始化sum变量
       while x<101         % 当x<101执行循环体语句
         sum=sum+x;       % 进行累加
         x=x+2; 
       end                %  while结构的终点
    sum                  % 显示sum
    
    >>
    2550
    

    3.2 for循环

    语法规则如下:

    for ii = 初值:增值:终值
    语句一
    语句二
    end

    clear
    sum=0;                         % 设置初值(必须要有)
    for ii=1:100;                      %  for循环,增量为1
        sum=sum+ii;
    end
    sum
    %end                           % 程序结束
    

    还有其他的continue,break语句与c语言类似,而input()的用法与python类似。
    此外c语言中的”!“在matlab中用”~“

    4.函数

    在matlab中对于自带的函数可以直接调用,若是自写函数,如冒泡排序算法
    新建脚本后,保存为BubbleSort.m,注意文件名要与函数名一致

    function s=BubbleSort(x) 
    % 冒泡排序,x为待排序数组 
    n=length(x); 
    for i=1:n-1             % 最多做n-1趟排序 
        flag=0;                 % flag为交换标志,本趟排序开始前,交换标志应为假 
        for j=1:n-i             % 每次从前向后扫描,j从1到 n-i 
            if x(j)>x(j+1)      % 如果前项大于后项则进行交换 
                t=x(j+1);
                x(j+1)=x(j); 
                x(j)=t; 
                flag=1;         % 当发生了交换,将交换标志置为真 
            end 
        end 
    

    在调用的时候,只用新建脚本(与函数文件在同一路径下),即可直接调用

    x = rand(1,10)
    y = BubbleSort(x)
    >>
     1 至 9 列
    
        0.0292    0.0855    0.2373    0.2625    0.4588    0.4886    0.5785    0.7303    0.8010
    
      10 列
    
        0.9289
    

    相关文章

      网友评论

          本文标题:matlab程序设计

          本文链接:https://www.haomeiwen.com/subject/rodfwqtx.html