Todd's Matlab讲义第2讲:Matlab 编程

时间:2021-10-14 01:42:25

Matlab也可以编程,可存为以.m为后缀的文件,称为M文件。M文件有两种:函数和脚本。

函数程序

点击新建图标,在打开的窗口里输入如下内容:

function y = myfunc (x)
y = 2*x.^2 - 3*x + 1;

将文件保存为myfunc.m,保存在当前目录下。这个文件就可以直接在命令窗口使用了,用法如Matlab内置函数,如在命令窗口输入如下内容:

>> x = -2:.1:2;
>> y = myfunc(x);
>> plot(x,y)

这里函数文件和命令窗口都用了变量x和y,这只是巧合,其实只有文件名才是重要的,函数调用的变量名不重要,比如完全可以把上述文件写为:

function nonsense = yourfunc ( inputvector )
nonsense = 2* inputvector .^2 - 3* inputvector + 1;

函数程序结构都类似此程序。函数程序基本要素为:

  • 开头必须是关键词 function
  • 必须有输入输出。
  • 输出变量、函数名和输入变量必须出现在第一行。
  • 输出变量必须要被赋值。

函数可以有多个输入,用逗号隔开,如:

function y = myfunc2d (x,p)
y = 2*x.^p - 3*x + 1;

函数可以有多个输出,放在一个向量里面,如:

function [x2 x3 x4] = mypowers (x)
x2 = x .^2;
x3 = x .^3;
x4 = x .^4;

将此文件保存为mypowers.m,在命令窗口里如下命令画图:

>> x = -1:.1:1
>> [x2 x3 x4] = mypowers(x);
>> plot(x,x,’black’,x,x2,’blue’,x,x3,’green’,x,x4,’red’)

脚本程序

脚本程序与函数程序有诸多不同,如:

  • 无输入输出
  • 可以改变当前工作区中的变量

前面的图有可以由如下脚本程序实现:

x2 = x .^2;
x3 = x .^3;
x4 = x .^4;
plot (x,x,’black ’,x,x2 ,’blue ’,x,x3 ,’green ’,x,x4 ,’red ’)

将此程序输入到一个新文件里,并保存为mygraphs.m。在命令窗口输入:

>> x = -1:.1:1
>> mygraphs

这里程序需要用到命令窗口里定义的变量x。命令窗口的变量名与脚本文件里的变量名必须一致。

许多人用脚本程序做需要输入多行命令的常规计算,因为比较容易修正错误。

程序注释

当程序行数比较多时,加入注释非常重要,以便能让别人看懂自己的程序,也为了自己备忘。不仅要在程序首部加注释,程序的各个部分也应该加必要的注释。在Matlab里,注释都放在符号%后面。

对于函数程序,至少注释函数的目的、输入输出变量。现在我们把前面写的函数程序加上注释:

function y = myfunc (x)
% Computes the function 2x^2 -3x +1
% Input : x -- a number or vector ;
% for a vector the computation is elementwise
% Output : y -- a number or vector of the same size as x
y = 2*x .^2 - 3*x + 1;

对于脚本程序,程序文件首先注释下文件名会非常方便,如:

% mygraphs
% plots the graphs of x, x^2, x^3, and x^4
% on the interval [ -1 ,1]
% fix the domain and evaluation points
x = -1:.1:1;
% calculate powers
% x1 is just x
x2 = x .^2;
x3 = x .^3;
x4 = x .^4;
% plot each of the graphs
plot (x,x,’+-’,x,x2 ,’x-’,x,x3 ,’o-’,x,x4 ,’--’)

文件存为mygraphs.m,用help命令会输出第一个注释块,如输入命令:

>> help mygraphs

命令窗口会输出

  mygraphs
plots the graphs of x, x^2, x^3, and x^4
on the interval [ -1 ,1]
fix the domain and evaluation points

练习

1 写一个带有必要注释的函数程序,计算函数\(x^2e^{-x^2}\),并在区间[-5,5]上画出函数图形。

2 写一个带有必要注释的脚本程序,画出函数\(\sin x\),\(\sin 2x\),\(\sin 3x\),\(\sin 4x\),\(\sin 5x\),\(\sin 6x\) 在区间\([0,2\pi]\)上的图形。

Todd's Matlab讲义第2讲:Matlab 编程的更多相关文章

  1. Todd's Matlab讲义第4讲:控制误差和条件语句

    误差和残量 数值求解方程\(f(x)=0\)的根,有多种方法测算结果的近似程度.最直接的方法是计算误差.第\(n\)步迭代结果与真值\(x^\*\)的差即为第\(n\)步迭代的误差: \begin{e ...

  2. Todd's Matlab讲义第1讲:向量,函数和作图

    向量 Matlab 中最基本的对象是矩阵,向量是特殊的矩阵.行向量是\(1\times n\)矩阵,列向量是\(m\times 1\)矩阵.输入如下行向量: >> v=[0 1 2 3] ...

  3. Todd's Matlab讲义第5讲:二分法和找根

    二分法和if ... else ... end 语句 先回顾一下二分法.要求方程\(f(x)=0\)的根.假设\(c = f(a) < 0\)和\(d = f(b) > 0\),如果\(f ...

  4. Todd&&num;39&semi;s Matlab讲义第3讲:牛顿法和for循环

    方程数值求解 下面几讲,我们将聚集如下方程的解法: \begin{equation} f(x)=0 \tag{3.1}\label{3.1} \end{equation} 在微积分课程中,我们知道,许 ...

  5. Todd&&num;39&semi;s Matlab讲义第6讲:割线法

    割线法 割线法求解方程\(f(x)=0\)的根需要两个接近真实根\(x^\*\)的初值\(x_0\)和\(x_1\),于是得到函数\(f(x)\)上两个点\((x_0,y_0=f(x_0))\)和\( ...

  6. matlab提速技巧(自matlab帮助文件)

    matlab提速技巧(自matlab帮助文件) 1.首先要学会用profiler.1.1. 打开profiler.To open the Profiler, select View -> Pro ...

  7. 动态可视化 数据可视化之魅D3&comma;Processing&comma;pandas数据分析&comma;科学计算包Numpy&comma;可视化包Matplotlib&comma;Matlab语言可视化的工作&comma;Matlab没有指针和引用是个大问题

    动态可视化 数据可视化之魅D3,Processing,pandas数据分析,科学计算包Numpy,可视化包Matplotlib,Matlab语言可视化的工作,Matlab没有指针和引用是个大问题 D3 ...

  8. Python的扩展接口&lbrack;3&rsqb; -&gt&semi; Matlab引擎 -&gt&semi; 使用 Python 调用 Matlab 程序

    Python - Matlab 目录 Python-Matlab 引擎 Python-Matlab 数组 Python-Matlab 基本操作 Python-Matlab 调用 m 文件 Matlab ...

  9. MFC控件第一讲&period;DC编程

    MFC控件第一讲.DC编程 一丶简介 什么是DC,DC有什么用. DC成为设备描述符表. DC的作用就是可以进行绘制. 比如我们的窗口都是绘制出来的.  DC可以简单理解为.没一个窗口程序都有一块内存 ...

随机推荐

  1. margin-top无效的问题解决方法

    今天碰到了margin-top无效的问题,解决方法也有很多一行代码就解决了 解决办法: 1.设置父元素或者自身的display:inline-block;(IE6.IE7不识别inline-block ...

  2. css渐变颜色在线制作

    http://www.colorzilla.com/gradient-editor/

  3. IT公司100题-25-求字符串中的最长数字串

    问题描述: 实现一个函数,求出字符串中的连续最长数字串.例如输入”12345cbf3456″,输出”12345″. 函数原型为: void conti_num_max( const char * sr ...

  4. Sqli-labs less 25a

    Less-25a 不同于25关的是sql语句中对于id,没有''的包含,同时没有输出错误项,报错注入不能用.其余基本上和25示例没有差别.此处采取两种方式:延时注入和联合注入. http://127. ...

  5. TLS握手优化详解

      随着 HTTP/2 的逐渐普及,以及国内网络环境越来越糟糕(运营商劫持和篡改),HTTPS 已经开始成为主流.HTTPS 在 TCP 和 HTTP 之间增加了 TLS(Transport Laye ...

  6. jquery ajax提交json格式的数据,后台接收并显示各个属性

    我的表单如下: <form onsubmit="return false"> <ul> <li><span>用户名</span ...

  7. 表设计与SQL优化

    1. 说说分区表的主要好处是什么,为什么会有这些好处. 分区功能能够将表.索引或索引组织表进一步细分为段,这些数据库对象的段叫做分区.每个分区有自己的名称,还可以选择自己的存储特性. 从数据库管理员的 ...

  8. CSS垂直居中解决方案

    问题场景 应用的地方比较普遍,这里有两个赤裸裸的栗子:   也有很多流行的方案,这里只针对各种方案的适用场景来做一些分析 问题抽象 其实,垂直居中问题可以简化成这样:一个容器HTML元素(#conta ...

  9. &lowbar;1Python简介 安装及版本检测

    简介 Python是一种面向对象的解释性计算机程序设计语言,由荷兰人Guido von Rossum于1988年的圣诞节发明,第一个公开发行版于1991年. Python崇尚优美.清晰.简单,是一个优 ...

  10. 面试北京XX数通总结

    软件架构师何志丹 1             总括 1.1     面试时间 2019年1月21号. 1.2     公司概况 员工近20人,其中开发人员6人,全部objectarx(C++),全部老 ...