• matlab 入门使用


    一、matlab 更改打开时的默认路径

    参考网址:https://www.cnblogs.com/mat-wu/p/6135555.html

     二、matlab 预定义的特殊变量

    pi, i, j, clock, date都是matlab预定义的特殊变量,命名的时候注意不要重名。

     三、matlab 简单使用demo

    在Command Window 输入命令 clc 清空Command Window;  clear 清空 Workspace; filename  直接运行 .m文件。

    matlab 代码中 % 后是单行注释,添加注释快捷键是 Ctrl + R ;取消注释快捷键是 Ctrl + T

    demo1.m

    % C 语言中,变量类型和变量在使用之前必须强制声明。这种语言叫强类型语言。
    % MATLAB 是弱类型语言,直接赋值就可以创建变量,变量类型取决于创建时的类型。
    
    var = 40*2i; % matlab 中i、j用来表示虚数,用 2i 这种形式提高速度和鲁棒性
    var2 = var/5;
    array = [1,2,3,4]; % 数组中的元素可以用空格分隔,也可以用逗号分隔
    x = 5;
    y = 10;
    
    % first:incr:last  克隆运算符,incr=1时可省略
    arr1 = 1:2:10;
    arr2 = 1:1:10;
    arr3 = 1:10;
    
    % 转置运算符
    g = 1:4; 
    h = [g' g'];
    
    % 用input初始化变量
    my_val = input('Enter an input value:');
    my_val2 = input('Enter an input value:','s'); %input('descript:','s')输入的数据就被当字符串
    
    % Conmmand Window 命令:输出显示格式 format short(默认),format bank(无科学记数法)
    aa = 4565.13246;
    % fprintf()  和c语言中print用法一样。缺点:只能显示复数的实部,所以有虚数时要用disp()
    fprintf('The value of pi is %6.2f \n',pi);
    % disp()  num2ster()   int2str
    str = ['the value of pi='  num2str(pi)];
    disp(str);

    四、matlab plot()的基础使用

    有多个plot()时,后面的图像会覆盖前面的图像。

    demo2.m

    % plot() 的使用方法
    x=0:1:10;
    y=x.^2-10*x+15;
    % plot(x,y);
    % 曲线为红色的虚线,重要的数值用蓝色的小圆圈表示
    % plot(x,y,'r--',x,y,'bo');
    title ('Plot of y=x.^2-10*x+15');
    xlabel ('x');
    ylabel ('y');
    grid on; % grid off 去除网格线
    
    % 联合绘图
    x1 = 0:pi/100:2*pi;
    y1 = sin(2*x1);
    y2 = 2*cos(2*x1);
    plot (x1,y1,x1,y2);
    title(' Plot of f(x)=sin(2x) and its derivative');
    xlabel('x');
    ylabel('y');
    % legend 制作图例
    legend('f(x)','d/dx f(x)');
    grid on;
    % 对数尺度
    semilogx(x1,y1)

    四个图像分别是 plot(x,y);  plot(x,y,'r--',x,y,'bo');   plot (x1,y1,x1,y2);   semilogx(x1,y1)  的图像。

    五、matlab 应用的两个小例子

    example1:读取一个华氏温度的输入,输出为开尔文温度、example2:负载的最大输出功率。

    demo3.m

    % example1:读取一个华氏温度的输入,输出为开尔文温度
    var = input('输入华氏温度:');
    f = 5/9 * (var -32) + 273.15;
    fprintf('转换后的开尔文温度为  %6.2f \n ',f);
    
    % example2:负载的最大输出功率
    % 注意在本例中,用的是数组运算符 .*   .^和   ./
    % 这些运算符将会使数组 amps 和 pl 按元素一一对应计算.
    V = 120;
    Rs = 50;
    Rl = 1:1:100;
    I = V ./ ( Rs + Rl); % ./ 
    PL = I.^2 .* Rl; % .^  .* 都要带 .
    plot(Rl,PL);
    grid on;

    输出结果:

     六、matlab常用语法(if、figure、hold on、极坐标、while、for循环、全局变量)

     demo4.m

    % *************************** if else *******************************
    % if  else之间是第一个block; else  end之间是第二个block
    % 或者if  end之间是一个block,和缩进无关,缩进只是为了方便阅读。
    % a = 2;
    % disp('I am if statement:')
    % if a==1 
    %     fprintf('a is 1 \n');
    %     fprintf('I am a. \n');
    % else
    %     fprintf('a is not 1 \n');
    %     fprintf('I am not a. \n');
    % end
    
    % ***************************** figure *****************************
    % x = 0:10;
    % y = x.^2 + 5*x + 6;
    % figure(1); % 创建多个图像
    % plot(x,y);
    
    % x1 = 0:pi/100:2*pi;
    % y1 = sin(2*x1);
    % figure(2);% 创建多个图像
    % plot(x1,y1);
    
    % **********************************************************
    % hold on 所有的新的图象都会叠加在原来存在的图象。
    % hold off 命令可恢复默认情况,用新的图象来替代原来的图象。
    % x1 = 0:pi/100:2*pi;
    % y1 = sin(x1);
    % y2 = cos(x1);
    % hold off;
    % plot(x1,y1,'r');
    % hold on;
    % plot(x1,y2,'k--');
    % hold off;
    % ******************************* 极坐标 ***************************
    % 极坐标
    g = 0.5;
    theta = 0:pi/20:2*pi;
    gain = 2*g*(1+cos(theta));
    polar (theta,gain,'r-');
    % ****************************** while ****************************
    % while   end 之间是block
    b = 1;
    while(b <= 5)
        disp(b);
        b = b+1;
    end
    % **************************** for ******************************
    % for   end 之间是block
    %  for 循环算法比向量算法慢
    for c = 1:2:10  % for c = [1,5,7,9]
       fprintf('c^2 is %d \n',c^2);
    end
    disp('************************向量化************************')
    % 用向量算法代替循环的算法的过程称之为向量化(vectorization)
    % 向量执行的速度快,缺点是需要很大的内存,但仍要比 for 循环好的多
    cc = 1:2:10;
    ccc = cc.^2;
    fprintf('ccc is %d \n',ccc);
    % **************************** 全局变量 ******************************
    % 可以用global声明全局变量。
    % 为了方便,应该在函数开头就声明全局变量。 
    % 全局变量适用大规模数据的传输
    global var1 var2 var3 ;
     var1 = 1;
     var2 = 2;
     var3 = 3;

    if 语句输出结果:

     

    figure 语句输出结果:

     

    hold on、hold off 语句输出结果:

    极坐标 语句输出结果:

     while 语句输出结果:

    for 循环语句输出结果:

     

    七、matlab 自定义函数

    demo5_myFunction.m (自定义函数)

    % 在这个文件里自定义函数,函数名必须和文件名一致
    % 函数脚本不需要运行,只要保存即可
    % function result = filename(params)  //这里的函数名字必须和文件名一致
    % function block
    
    function distance = demo5_myFunction (x1, y1, x2, y2)
    %DIST2 Calculate the distance between two point
    % Function DIST2 calculates the distance between
    % two points (x1, y1) and (x2,y2) in a cartesian
    % coordinate system.
    %
    % Calling sequence:
    % res = dist2(x1, y1, x2, y2)
    %
    % Define variables:
    % x1  --x-position of point 1
    % y1  --y-position of point 1
    % x2  --x-position of point 2
    % y2  --y-position of point 2
    % distance --Distance between points
    %
    % Record of revisions:
    %  Date Pragrammer  Description of change
    %  ========  ========== ================
    %  12/15/98 S.J.Chapman Original code
    %
    % Calculate distance.
    
    % 函数体内容
    distance = sqrt((x2-x1).^2 + (y2-y1).^2);

    demo5_myFunction_useFunction.m(调用自定义函数)

    % 在这个文件调用自定义函数
    %  Script file: test_dist2.m
    %
    %  Purpose:
    %  This program test2 function dist2.
    %
    %  Record of revisions:
    %  Date Pragrammer  Description of change
    %  ========  ========== ================
    %  12/15/98 S.J.Chapman Original code
    %
    %  Define variables:
    %  ax  --x-position of point a
    %  ay  --y-position of point a
    %  bx --x-position of point b
    %  by --x-position of point b
    %
    %  Get input data.
    disp('Calculate the distance between two points:');
    ax = input ('Enter x value of point a:');
    ay = input ('Enter y value of point a:');
    bx = input ('Enter x value of point b:');
    by = input ('Enter y value of point b:');
    
    %  Evaluate function
    % 调用自定义函数  result = 自定义函数文件名(params)
    result = demo5_myFunction (ax, ay, bx, by); % 调用自定义只有这一句
    %  Write out result.
    fprintf('The distance between points a and b is %f \n', result);

    运行结果:

    自定义函数2 :

    demo5_calc2.m

    % 自定义函数 example2
    % 有多个输出,写在[]中;输出只有一个时[]可以省略
    % 函数结尾的result可以写,但没必要(运行到最后一行函数自然停止)
    % 自定义函数接受不固定个输入参数,请搜索 “选择性参数、inputParser”
    function [y1,y2] = demo5_calc2(x1,x2)
    y1 = x1^2;
    y2 = x2^2;
    
    disp(['max(x1,x2):',num2str(max(x1,x2))]);
    
    % ******************************************
    % max()只能被同一文件中的其它函数调用,是子函数
    % 私有函数有 private 声明的子函数,它们只能被父目录中的函数访问
    % 子函数和私有函数主要用于限制 MATLAB 函数的访问
    function a = max(m,n)
    
    if(m<n)
        a = n;
    else if(m > n)
         a = m;
        end;
    end;

    demo5_calc2_useFunction.m 

    % 使用自定义函数 example2
    x1 = input('input x1:');
    x2 = input('input x2:');
    % 调用自定义函数格式就是:
    %   自定义函数文件中第一行代码去掉 function 剩下的部分
    %       function [y1,y2] = demo5_calc2(x1,x2)
    [y1,y2] = demo5_calc2(x1,x2);
    disp(['y1 is ', num2str(y1)]);
    disp(['y2 is ', num2str(y2)]);

    运行结果:

  • 相关阅读:
    对C# .Net4.5异步机制测试
    权限系统设计
    C#基础知识
    eclipse+pyDev
    Ubuntu下使用sublime text进行py开发
    110_02 补充模块:BeatifulSoup模块
    034 如何判断一个对象是否是可调用对象
    037 简单计算器实现
    036 re模块的小练习
    035 用Python实现的二分查找算法(基于递归函数)
  • 原文地址:https://www.cnblogs.com/sunshine233/p/15951334.html
Copyright © 2020-2023  润新知