精华内容
下载资源
问答
  • matlab程序结构

    千次阅读 2021-04-21 20:39:24
    洋洋洒洒500多行,现在看起来都头大……于是上网上找了找matlab程序结构方面的东西。发现有一篇RichardJohnson写的《matlab 编程风格指南》。感觉有思想而且很受用,建议一定要去读一下。特别是提到"要能够不用注释...

    如何优化程序?

    一言以蔽之:全部使用函数!

    如何优化文件?

    一言以蔽之:做成工具箱!

    今天师姐要我上次matlab做的后处理文件,当时是用脚本写的,根本没用心修改过。洋洋洒洒500多行,现在看起来都头大……于是上网上找了找matlab程序结构方面的东西。发现有一篇Richard

    Johnson写的《matlab 编程风格指南》。感觉有思想而且很受用,建议一定要去读一下。特别是提到"要能够不用注释就让人读懂程序"这点,想我们每次写程序还要添加注释,这相当于把程序写了两遍,想想就觉得奇怪。既然如此,那还不如让程序结构更加清晰,变量名更有意义。下面就是其中一小段:

    编写一个大程序的最好的方法是将它以好的设计分化为小块(通常采用函数的方式)。这种方式通过减少为了理解代码的作用而必须阅读的代码数量,使得程序的可读性、易于理解性和可测试性得到了增强。超过编辑器两屏幕的代码都应该考虑进行分割。并且设计规划很好的函数也使得它在其他的应用中可用性增强了。

    (但是其中几点细节还是需要商榷,特别是变量命名规则,和网上其他的一些"规则"相比,特别特别麻烦不说,而且也没有看出程序可读性好到哪里去。)

    文件形式

    和fortran中有所区别,在matlab中文件只有脚本和函数两种形式。

    1.脚本文件

    脚本文件就是命令流的集合。只要在Command

    Window中输入脚本文件名,便可直接执行脚本文件内容。脚本运行后,所有产生的变量都驻留在matlab基本工作空间中。

    脚本文件是最适合新手debug的(不要笑我,咱就是这么学来的,但是现在推荐使用调试器)。一个大的函数文件分成很小的部分后,可以把主函数使用脚本文件形式,子函数储存为函数文件,可以看到所有中间变量运行的过程,从而更快的找到bug出现的地方。

    因为脚本是逐行运行的,所以它不能包含子函数。可以创建内联函数,但是必须创建后才可使用。

    2.函数文件

    函数文件是一个"黑箱",外部只能看到其输入与输出,内部运作过程是看不到的。

    函数文件运行时候,matlab就会专门为其开辟一个临时工作空间,该空间称之为函数工作空间。所有中间变量保存在该空间中,一旦函数运行完毕就会把空间和中间变量全部清除掉。(若函数文件对某个脚本进行了调用,那么会把脚本产生的中间变量存放在函数空间之中,而不是基本工作空间中。)

    说到函数文件就不得不提一下子函数,这种东西在脚本文件中是没有的。函数文件中可以有多可函数的代码,其中第一个出现的是主函数[Primary

    function],其他函数为子函数[Subfuncion]。保存时所用函数文件名与主函数定义名相同。外部程序只能对主函数进行调用,而不能调用子函数。特点有以下几点:

    函数文件内,主函数位置不可改变,而子函数排列次序可以任意改变。

    子函数只能被同一文件内其他函数(主函数或者子函数)调用。

    调用函数时子函数优先级仅次于内建函数

    同一文件内各个函数工作空间都是彼此独立的,函数信息传递,或者通过全局变量传递,或者通过跨空间指令传递。

    局部变量和全局变量

    从上面两种文件各自的工作空间便知:局部变量是函数空间内部的变量;全局变量是所有函数空间和基本工作空间共享的同一个变量(所说的同一个意思是,一个空间内变量值改变,其他空间内变量值也相应改变)。

    程序调试方法

    1.脚本文件

    脚本文件的调试是最简单的,你要是不会那就别编程了。咱在过去那段用脚本debug的懵懂时期,自己悟到了一些有用的小技巧,给大家介绍一下。

    脚本文件大部分命令流都是按顺序进行的,所以没什么好说的,你右键单击要执行的程序段,点击Evaluation

    Selection,就可以在Command Window中直接执行。

    a4c26d1e5885305701be709a3d33442f.png

    有点麻烦的就是循环,因为循环有点像是自己封装起来,没法看到中间执行步骤。这也没有问题,看下面的这个循环:

    for i=1:length(str)

    if

    str(i)=='

    ';

    s1=str(1:i-1);

    s2=str(i:end);

    break

    end

    end

    其中循环变量是i,那我们就在循环之前把循环变量赋值好,i=1,然后直接输入循环体,

    if str(i)==' ';

    s1=str(1:i-1);

    s2=str(i:end);

    break

    end

    便可看到循环中间过程里s1,s2每次的变化了。

    2.函数文件

    (1)debugging

    我使用的matlab 8.0.0.783

    (R2012b)版本,所以和7.x版本调试会略有所区别。

    写好了一个提取字符串中数值的函数,数值在字符串内使用空格隔开的,例如str='250 90

    9'。下面我对这个函数进行调试,并检查一下它的运行性能如何,有没有能够优化的地方。

    单击Editor左侧数字后面横线位置,便可设立一个BreakPoint,如图:

    a4c26d1e5885305701be709a3d33442f.png

    进行调试时候,只要在Command

    Window中直接输入numberSeperateByBlang_fcn(str),就可进入debugging模式。这时候可以输入想要查询的变量名,或者让程序在断点后面一步步执行。

    a4c26d1e5885305701be709a3d33442f.png

    检查变量值

    a4c26d1e5885305701be709a3d33442f.png

    运行函数文件断点的下一行

    (2)检查函数性能

    前提是基本工作空间内你已经准备好了输入的变量,点击"Run"里面的"Run:type code to

    run",然后如下图,输入你准备好的测试变量,单击右面的"Run and Time"的图标便可以开始测试。

    a4c26d1e5885305701be709a3d33442f.png

    测试的结果如下所示,其中有主函数numberSeperateByBlang_fcn,调用的函数str2double等运行的时间和调用次数等信息。一般找到耗时最多的函数,进行优化即可。

    a4c26d1e5885305701be709a3d33442f.png

    下面插播一点小内容,作为学习创建工具箱的必备知识:

    matlab搜索指令的顺序

    matlab在运行时候碰到一个指令fcn时候,按照以下步骤进行搜索:

    检查fcn是否是变量名

    检查fcn是不是内建函数[Bulid-in function]

    检查fcn是不是所在函数文件的一个子函数

    检查fcn是不是所在函数文件的一个私用函数

    检查fcn是不是当前目录上的文件(函数文件或脚本文件)

    检查搜索路径上是不是有fcn存在

    matlab使用最优先找到的那个fcn,若一直找不到,就给出错误的提示信息:Undefined function or variable 'LLX'.

    创建工具箱神马的等我把程序写好再填上,干说不练写个鸟啊。(又开一座深坑Orz)

    PS:开坑什么的最喜欢了

    展开全文
  • MATLAB程序结构

    2021-05-08 20:25:53
    FOR循环结构 for i=初值:增量:界值 循环体 end 例1:使用for循环求12+22+⋯+1002.1^2 + 2^2 + ⋯ + 100^2.12+22+⋯+1002. clear s=0; for k=1:100 s=s+k^2; end s WHILE循环结构 while 条件表达式 循环体 end ...

    FOR循环结构

    for i=初值:增量:界值
    循环体
    end
    

    例1:使用for循环求 1 2 + 2 2 + ⋯ + 10 0 2 . 1^2 + 2^2 + ⋯ + 100^2. 12+22++1002.

    clear
    s=0;
    for k=1:100
    s=s+k^2;
    end
    s
    

    在这里插入图片描述

    WHILE循环结构

    while 条件表达式
    循环体
    end
    

    用while循环求 1 3 + 2 3 + ⋯ + 10 0 3 1^3 + 2^3 + ⋯ + 100^3 13+23++1003

    clear
    k=1;
    s=0;
    while k<101
    s=s+k^3;
    k=k+1;
    end
    s
    

    在这里插入图片描述

    IF分支结构

    if 条件表达式
    语句组
    end
    或
    if条件表达式
    语句组1
    else
    语句组2
    end
    

    定义函数 y = g ( x ) = { 10 , x ≥ 1 0 , − 1 ≤ x ≤ 1 − 10 , x ≤ − 1 y=g(x)=\left\{ \begin{array}{lr} 10, & x \geq 1\\ 0 , & - 1\leq x \leq 1 \\ -10, & x \leq -1 \end{array} \right. y=g(x)=10,0,10,x11x1x1
    ,并求𝑥 = 2和𝑥 = −2时,𝑦的值

    在这里插入图片描述
    SWITCH分支结构

    switch 表达式
    case 常量表达式1
    语句组1
    case 常量表达式2
    语句组2
     …….
    case 常量表达式n
    语句组n
    otherwise
    语句组
    end
    

    通过输入星期的阿拉伯数字, 将其转换为英语单词和相应的
    中文,例如输入”7”,则输出”Sunday(星期天)”。

    s=input('please in put a number');
    switch s
        case 1
            disp('Monday(星期一)')
        case 2
            disp('Tuesday(星期二)')
        case 3
            disp('Wednesday(星期三)')
        case 4
            disp('Thursday(星期四)')
        case 5
            disp('Friday(星期五)')
        case 6
            disp('Saturday(星期六)')
        case 7
            disp('Sunday(星期日)')
        otherwise
            disp('input error')
    end
    

    在这里插入图片描述

    程序的流程控制

    1. continue 语句用于for和while循环体中, 其作用是终止一次循环 的执行, 它跳过本次循环中未被执行的语句,去执行下一次循环。
    2. break语句结束当前循环, 常与if语句配合使用。
    3. return语句使它所在的函数结束运行, 并返回到调用该函数的函数。
    展开全文
  • MATLAB 程序结构和流程控制预备知识 MATLAB 编程基础 常用编程语言 (如C ,C++ )的编程基础本章要点 掌握MATLAB 常见的条件语句结构及其应用 掌握MATLAB 常见的循环语句结构及其应用 掌握MATLAB 的错误...

    MATLAB 程序结构和流程控制

    预备知识

     MATLAB 编程基础

     常用编程语言 (如C ,C++ )的编程基础

    本章要点

     掌握MATLAB 常见的条件语句结构及其应用

     掌握MATLAB 常见的循环语句结构及其应用

     掌握MATLAB 的错误控制语句结构及其应用

    导言

    MATLAB 作为一门编程语言,其本身除了具有上一章我们描述的各种特点和优势外,

    也具有和其他编程语言类似的程序结构。通过这些程序结构,我们可以方便地对MATLAB

    程序的流程进行控制,从而方便地实现各种功能。与此同时,MATLAB 本身还通过函数值

    的传递以及相应的文本操作实现流程控制。在掌握了上一章MATLAB 编程基础的前提下,

    通过了解这些内容,我们可以独立地编写相对结构化的MATLAB 程序,从而为通过

    MATLAB 编写心理学实验程序打下基础。

    在本章中,我们将带领大家逐步掌握MATLAB 的程序结构,并且学习这些程序结构是

    如何被应用于MATLAB 的流程控制中的,完善大家对于MATLAB 流程控制的认识,从而

    帮助大家全方位地掌握MATLAB 所特有的程序结构。

    同其他的编程语言类似,MATLAB 本身也有其固定的程序结构,以帮助用户在编程的

    时候实现流程控制。相信有过编程语言基础的读者都知道,常见的程序结构包括条件语句和

    循环语句。MATLAB 同样也支持这两种程序结构。除此之外,MATLAB 还能够支持错误控

    制语句,以帮助用户在主程序运行发生问题时,能够控制程序的流程,及时终止程序,甚至

    可以实现分析程序错误的功能。在本节中,我们将从这三种程序结构出发,为大家介绍

    MATLAB 的流程控制。MATLAB 常见的程序结构如表1 所示:

    表 1 MATLAB 常见的程序结构

    程序结构 功能

    if …else … 条件语句

    switch …case … 条件语句

    for 循环语句

    while 循环语句

    try …catch … 错误控制语句

    2.1 条件语句

    在心理学实验的时候,我们经常需要根据不同的条件进行判断。例如在使用阶梯法测被

    试的感觉阈限时,我们就需要根据被试上一个试次反应的正确与否,来决定下一个试次的刺

    激强度。又例如当我们需要记录被试的反应时,我们经常需要依据试次的类型分开独立记录,

    这也需要我们通过判断试次的类型来决定是否记录或者以怎样的方式记录。当我们需要编程

    来完成上述过程的时候,条件语句就是我们必不可少的工具。在常见的编程语言,如C/C++

    中,条件语句的形式包括两种,if 条件语句和switch 条件语句。这两种条件语句同样也是

    MATLAB 中常见的条件语句,下面我们将分别介绍这两种程序结构。

    2.1.1 if 条件语句

    if 条件语句是MATLAB 中最常用的条件语句,它经常被用于进行多个条件的判断,从

    而使得程序能够依据不同的条件来执行不同的功能。这在我们之前提到的使用阶梯法测被试

    的感觉阈限等情境下就会经常被用到。在MATLAB 中,if 条件语句通常和else 、elseif 、end

    等关键字一起使用。常见的if 条件语句的程序结构如下所示:

    if expression1

    statement1

    elseif expression2

    statement2

    elseif expression3

    statement3

    else

    statement4

    end

    在上述的语句结构中,不同的expression 表示判断的条件,不同的statement 表示需要

    执行的语句。当使用if 语句控制流程的时候,MATLAB 会从上往下依次判断每个条件。例

    如,在上述的程序结构中,MATLAB 会首

    展开全文
  • Matlab程序结构和流程控制 2017-spring CLH@pku.edu.cn 预备知识 Matlab编程基础 常用编程语言(如C、C++)的编程基础 本章要点 If…else 条件语句 switch…case 条件语句 for 循环语句 while 循环语句 try…catch…...

    Matlab程序结构和流程控制 2017-spring CLH@pku.edu.cn 预备知识 Matlab编程基础 常用编程语言(如C、C++)的编程基础 本章要点 If…else 条件语句 switch…case 条件语句 for 循环语句 while 循环语句 try…catch…错误控制结构 If 三种基本形式: If..else..end If..end If..elseif…elseif..else.end If 注意事项 典型错误:if 50 < x <= 100 (If_Example.m) 一旦执行为真的表达式对应的命令行,就不再判断其他的表达式。 = 与 ==的区别。 闭合原则:一个if 对应一个end. If..end可以嵌套(NestedIf.m) if语句 示例讲解 if语句基本用法 IF_ELSE.m if … end 嵌套 NestedIf.m 注意elseif 和else if 的区别 典型错误:if 50 < x <= 100 If_Example.m 同时从该样例中复习函数的编写 Switch条件语句 switch应用场合 switch条件语句通常和case, otherwise,end等关键字一起使用。 遍历所有case(条件)-Switch_Example.m switch条件语句一般适用于处理判断条件为“离散”的情况。Switch_Error.m switch 示例讲解 switch条件语句基本用法Switch_Example.m switch条件语句一般适用于处理判断条件为“离散”的情况(分段函数)。Switch_Error.m 思考:对实验设计的用处? 循环语句-For, While for循环语句的三种结构 for variable = StartValue : EndValue statement1 statement2 … end ? for variable = StartValue : step : EndValue statement1 statement2 … end ? for variable = Array statement1 statement2 … end ? for 示例讲解 基本用法:For_Example1.m for i = 1:10 for i = 0:2:10 思考:for i = 1:2:8 结果如何 for i = y’ (y’为已知的向量) for 示例讲解 不仅可以用于数字,还可以用于字符 For_Example_char.m 用于被试数据批量处理 Cell格式存取被试名,以及统计常见结果(反应时) for 示例讲解 break 和 continue的区别:break 终止当前循环 ,continue 跳过此循环1次。 break For_Break.m continue For_continue.m 编程的简洁性-Think in ‘Matrix’ ForVectorization_1 ForVectorization_2 while while expression statement1 statement2 … end While_Example.m while 示例讲解 基本用法 While_Example.m While_Example2.m 重要应用:while-用于trials数不确定场合,比如adaptive procedures While_Adaptive.m 等待按键反应 While_Mouse.m 错误控制语句 Try-Catch 基本用法 Try_Example.m 实验中的应用:Try_Psychophysics.m 如何显示错误? try catch Screen('CloseAll'); Snd('Close'); Priority(0); ShowCursor; % whatswrong = lasterror; % disp(whatswrong.message); psychrethrow(lasterror); end 编程习惯 先纸笔,后编程。 预先分配矩阵。 注释。 M-Lint 结果 tic,toc profile, example1.m >> profile?on,?profile?clear? ? >>?example1(5000);? ?>>?profile?viewer? a(1)=1; b(1)=0; tic; for k=2:8000 a(k)=0.

    展开全文
  • MATLAB程序控制结构

    2021-08-29 21:54:46
    支持3种最基本的控制结构:顺序结构、循环结构和选择结构 1.顺序结构 (1)数据的输入input input命令用来提示用户应从键盘输入数值、字符串和表达式,并接受该输入。 input命令常用的调用格式: A=input(提示...
  • 等于每期与年内复乘积利率利次数的,下面序多次名义年内...下程序结构结构有以,的输序执行后果是}程出结。下程序:中程有以,的输行后}执果是出结。下程序:控制有以,文件的可译链执行经编接后}此程序生成是e,...
  • 第12章--MATLAB-Simulink系统仿真-习题答案.doc第12章 MATLAB Simulink系统仿真习题12一、选择题1启动Simulink后,屏幕上出现的窗口是( )。AASimulink起始页 BSimulink Library Browser窗口CSimulink Block Browser...
  • MATLAB同其他高级语言一致,有三种基本程序结构: 顺序结构; 选择结构; 循环结构 MATLAB流程控制语句主要有: For While if-else-end switch-case 常用命令: Break Continue 以及matlab特有的try命令,先...
  • MATLAB流程结构

    2021-04-18 04:13:51
    1. 顺序结构最简单的程序结构,用户编写好程序之后,系统按照程序的物理位置顺序执行。没有控制语句,结构单一,容易编写。例:运行代码clc;clear;close;x=1:0.01:10;y=sin(x);plot(x,y)运行结果2. 循环结构能够重复...
  • MATLAB的编程结构

    2021-04-23 10:47:20
    《续》MATLAB控制流if-else-end switch-case try-catch for循环 while循环基础输入、输出input调用格式:s表示可输入字符串 disp(A)直接输出A的内容;fprintf直接输出内容。循环结构for已知循环次数;while未循环训...
  • 第2章 MATLAB的文件结构及其绘图介绍Slide (of 42) 2.1Matlab程序结构 1.循环结构 常用for结构和while结构 for循环通常结构为 for i=s1:s3:s2 循环结构举例 例1:求 两种结构,后者麻烦 for结构 while结构 例2:求...
  • 2.1顺序结构1.数据的输入从键盘输入数据,则可以使用input函数来进行,该函数的调用格式为:A=input(提示信息,选项);其中提示信息为一个字符串,用于提示用户输入什么样的数据。如果在input函数调用时采用's'选项...
  • matlab循环结构程序设计实验报告实验三MATLAB程序设计 一、实验目的 1、掌握建立和执行M文件的方法。 2、掌握选择结构、多分支选择结构程序的编程方法。3、掌握多种循环结构程序的编程方法。4、掌握定义函数文件...
  • word完美格式精心整理 学习帮手实验二 MATLAB程序设计实验目的1.掌握利用if语句实现选择结构的方法。2.掌握利用switch语句实现多分支选择结构的方法。3.掌握利用for语句实现循环结构的方法。4.掌握利用while语句实现...
  • 实验二MATLAB程序设计

    2021-04-21 14:55:38
    《实验二MATLAB程序设计》由会员分享,可在线阅读,更多相关《实验二MATLAB程序设计(4页珍藏版)》请在金锄头文库上搜索。1、1实验二 MATLAB 程序设计一、 实验目的1.掌握利用 if语句实现选择结构的方法。2.掌握利用 ...
  • 实验五、选择与循环结构一、实验目的:1、 掌握建立和执行M文件的方法。2、 掌握利用if语句实现选择结构的方法。3、 掌握利用switch语句实现多分支选择结构的方法。4、 掌握try语句的使用。5、 掌握利用for语句实现...
  • 实验项目名称:matlab基本编程—MATLAB循环结构与分支结构实验目的、For-end循环结构与while循环结构、If-else-end选择结构与switch, case, otherwise分支结构的编写。四、实验方案设计:五、数据数据数据price<...
  • matlab选择结构程序的设计答案》由会员分享,可在线阅读,更多相关《matlab选择结构程序的设计答案(9页珍藏版)》请在人人文库网上搜索。1、实验三 选择结构程序设计一、实验目的1、掌握建立和执行 M文件的方法。2...
  • MATLAB实验三-选择结构程序设计》由会员分享,可在线阅读,更多相关《MATLAB实验三-选择结构程序设计(5页珍藏版)》请在金锄头文库上搜索。1、光电学院 073-1 班 刘颖 2007135031171MATLABMATLAB 实验报告实验报告...
  • 【实例简介】滑模变结构控制MATLAB仿真 程序代码,值得借鉴【实例截图】【核心代码】滑模变结构控制MATLAB仿真└── 滑模变结构控制MATLAB仿真├── 43188036SlidingMode.rar├── chap10│ ├── chap10_1plant...
  • MATLAB程序设计

    千次阅读 多人点赞 2021-01-28 21:41:13
    else-end`语句 4.4 `switch-case`语句 4.5 `try-catch`语句 5 M函数 `feval`函数 6 程序调试 7 MATLAB编程技巧 参考文献 1 程序基础 程序设计是MATLAB进行科学计算的基础。MATLAB 程序是合法的MATLAB语句的集合,...
  • matlab程序流程图

    2021-05-07 06:38:33
    matlab程序流程图》由会员分享,可在线阅读,更多相关《matlab程序流程图(11页珍藏版)》请在人人文库网上搜索。1、辊系位置关系:B、C辊偏心环的偏心量1=6.35mm ,A、D辊偏心环的偏心量2=3.175mm,并且对应于凸度...
  • 【实例简介】滑模变结构控制MATLAB仿真 程序代码,值得借鉴【实例截图】【核心代码】滑模变结构控制MATLAB仿真└── 滑模变结构控制MATLAB仿真├── 43188036SlidingMode.rar├── chap10│ ├── chap10_1plant...
  • 本文利用 MATLAB 软件,以某薄壁型钢梁为例,编制了用于结构可靠度计算的改进一次二阶矩法即设计验算点法计算程序,运行结果表明计 算速度较快,结果合理,可供工程技术人员参考使用。 1 结构可靠度的理论 现...
  • MATLAB程序设计实验报告.doc

    千次阅读 2021-04-24 17:54:55
    11 -MATLAB程序设计实验报告一、实验目的1. 通过实验熟悉MATLAB仿真软件的使用方法;2. 掌握用MATLAB对连续信号时域分析、频域分析和s域分析的方法,利用绘图命令绘制出典型信号的波形,了解这些信号的基本特征;3. ...
  • 【实例简介】滑模控制 MATLAB【实例截图】【核心代码】fac23b3f-e420-4e36-9a5a-2e225aeaf4da└── 滑模变结构控制MATLAB仿真(第3版):基本理论与设计方法 仿真程序├── 第10章仿真程序│ ├── chap10_1.m│ ├...
  • 怎么终止matlab程序

    千次阅读 2021-04-21 14:49:54
    结束函数文件的运行,同时函数工作空间的变量就被清 除; (4) 函数的工作空间随具体的M函数文件调用而产生,随调用 结束而... [转]退火算法解非线性方程组Matlab程序 专业交流 2007-06-......循环结构的 执行方式为首先...
  • 【实例简介】有限元结构动力学分析与工程应用这本书附带的(Matlab程序)【实例截图】【核心代码】04764c79-61be-4e1e-a791-bbbbf895d468└── m文件├── 第七章│ ├── EX791.m│ └── shellek.m├── 第三...
  • 0引言结构静力分析是任何机械产品结构设计分析的重要方面。静力分析的目的是确定结构在静力条件下受指定载荷、温度和约束时的应力和位移分布,从而及时发现应力、应变危险点,为产品的结构优化设计进行指导。结构优化...
  • 1.根据261212312121n2,求的近似值。当n分别取100、1000、10000n=n+2;... n=100程序设计: n=100; i=1:n; f=1./i.^2; x=sum(f); y=sqrt(6*x) 运行结果: x =3.1321 n=1000 程序设计: n=1000; i=1:n; f=1./i.^2; x=...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 35,070
精华内容 14,028
关键字:

matlab程序结构

matlab 订阅
友情链接: FaceRecProOV.zip