向量

Matlab 中最基本的对象是矩阵,向量是特殊的矩阵。行向量是\(1\times n\)矩阵,列向量是\(m\times 1\)矩阵。输入如下行向量:

>> v=[0 1 2 3]

回车,Matlab 将输出此行向量:

v =

     0     1     2     3

输入如下列向量:

>> u = [9; 10; 11; 12; 13]

按如下方式访问向量的元素:

>> u(2)

按如下方式改变元素的值:

>> u(2)=47

按如下方式提取多个连续向量:

>> u(2:4)

按如下方式将行向量变成列向量,也可以把列向量变成行向量:

>> w=v'

这个操作称为转置,'称为转置算符

还可以用如下方法快速建立行向量:

>> x=-1:0.5:1

另一方法为:

>> y=linspace(0,1,11)

基本输出格式

如果让输出更紧凑些,可以按如下命令:

>> format compact

如果要使结果输出更多位小数,输入如下命令:

>> format long

注意:这不会改变Matlab参与运算的数的位数,只是改变输出结果的小数位数。

作图

根据表格1中的数据,将表格中的数据赋给两个向量:

>> x = [ 5 20 30 50 55 ]

x =

     5    20    30    50    55

>> y = [ 0.08 0.015 0.009 0.006 0.0055]

y =

    0.0800    0.0150    0.0090    0.0060    0.0055
T 5 20 30 50 55
\(\mu\) 0.08 0.015 0.009 0.006 0.0055

表格1 温度与粘度

输入如下命令可将数据绘成图形:

>> plot(x,y)

如果想把数据点用符号表示出来,例如:

>> plot(x,y,'*')
>> plot(x,y,'o')
>> plot(x,y,'.')

内置函数

Matlab包含有大量的内置函数,如\(\sin()\)、\(\exp()\),等等,大部分函数的意义从名字一看便知。使用内置函数时,变量放在小括号里。比如:

>> sin(pi)

这是计算\(\sin \pi\)的值。

如下命令:

>> exp(0)

这是计算\(e^0\)的值。

Matlab内置函数还可以向量为自变量,比如:

>> x=linspace(0,2*pi,40);
>> y=sin(x);
>> plot(x,y)

输出结果为正弦函数在区间\([0,2\pi]\)上的图形。

Matlab常用内置函数还有:\(\cos( )\), \(\tan( )\), \(\sinh( )\), \(\cosh( )\), \(\log( )\) (自然对数), \(\log10( )\) (以10为底的对数), asin( ) (反正弦函数), \acos( ), \atan( )。要了解函数细节,可以用help命令查询,比如:

>> help plot
>> help sin
>> help

内联函数

Matlab提供多种方式自定义函数,一种方法是内联函数,这是在命令行窗口定义函数的一种方法。下面就是一个典型的内联函数:

>> f = inline('2*x.^2 - 3*x + 1','x')

这就定义了一个函数\(f(x)=2x^2-3x+1\)。如下计算单个函数值:

>> f(2.23572)

与内置函数一样,内联函数也可以带入向量,如:

>> x = -2:.2:2
>> f(x)

这正是向量化的例子,即用一个向量表示多个数,一次操作向量的所有元素,而非一次处理一个元素,这是Matlab的优势之一。\(f(x)\)可以处理向量\(x\),因为我们用 x.^2 表示 \(x^2\)。符号.使指数运算符 ^ 可以对向量各个元素做指数运算,比如[-2 -1.8 -1.6].^2运算实为$ [(-2)^2\quad (-1.8)^2 \quad (-1.6)^2 ]$,结果为[4 3.24 2.56]。而[-2 -1.8 -1.6]^2运算实为[-2 -1.8 -1.6][-2 -1.8 -1.6],程序将报错。运算.可用于.^,.*,./,但不需用于乘除标量,也不需用于加法+。

函数图形也可以用 plot 命令得到,如数据作图一样:

>> plot(x,y)

需要注意的是,这里其实是把函数转换成数据然后作图的。机器作图都需要这一转换步骤。

补充:Matlab R2015a 提示内联函数过时,未来将不支持内联函数。可以采用匿名函数来自定义函数。

匿名函数

输入如下命令可定义一个匿名函数:

>>  afun1 = @(x) sin(x)/x

计算函数值:

>>  afun1(2)

定义多个变量的匿名函数:

>>  afun2 = @(x,y) (x^2 + y^2 + x*y)

如果需要输入向量作为自变量,注意乘、除、幂运算分别需要用.*,./,.^进行。如:

>>  npdf = @(x) (1/sqrt(2*pi))*exp(-0.5*x.^2)

练习

1 从工程教科书中选取一个数据表格,将数据赋予向量,然后作图,并标记坐标轴和标题。

2 定义内联函数 \(g(x) = x + \cos(x^5)\)并作图。你得到的图有何问题?如何改善?

Todd's Matlab讲义第1讲:向量,函数和作图的更多相关文章

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

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

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

    Matlab也可以编程,可存为以.m为后缀的文件,称为M文件.M文件有两种:函数和脚本. 函数程序 点击新建图标,在打开的窗口里输入如下内容: function y = myfunc (x) y = ...

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

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

  4. Todd's Matlab讲义第3讲:牛顿法和for循环

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

  5. Todd's Matlab讲义第6讲:割线法

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

  6. 【Matlab开发】matlab中norm范数以及向量点积、绘图设置相关

    [Matlab开发]matlab中norm范数以及向量点积.绘图设置相关 标签(空格分隔): [Matlab开发] 声明:引用请注明出处http://blog.csdn.net/lg125915677 ...

  7. MATLAB实现最优低通滤波器的函数

    MATLAB实现最优低通滤波器的函数 % Fs     --Data rate % Fpass  --pass band % Fstop  --Cutoff frequencies % Apass  ...

  8. [转]matlab语言中的assert断言函数

    MATLAB语言没有系统的断言函数,但有错误报告函数 error 和 warning.由于要求对参数的保护,需要对输入参数或处理过程中的一些状态进行判断,判断程序能否/是否需要继续执行.在matlab ...

  9. matlab练习程序(求向量间的旋转矩阵与四元数)

    问题是这样,如果我们知道两个向量v1和v2,计算从v1转到v2的旋转矩阵和四元数,由于旋转矩阵和四元数可以互转,所以我们先计算四元数. 我们可以认为v1绕着向量u旋转θ​角度到v2,u垂直于v1-v2 ...

随机推荐

  1. iOS:实现图片的无限轮播之使用第三方库SDCycleScrollView

    下载链接:github不断更新地址:https://github.com/gsdios/SDCycleScrollView #import "ViewController.h" # ...

  2. Java中的String、StringBuffer以及StringBuilder的用法和区别

    String String的构造方式有n种(据说n==11),常见的例举一二: String s1 = "hello world"; String s2 = new String( ...

  3. java并发:线程同步机制之Lock

    一.初识Lock Lock是一个接口,提供了无条件的.可轮询的.定时的.可中断的锁获取操作,所有加锁和解锁的方法都是显式的,其包路径是:java.util.concurrent.locks.Lock, ...

  4. 最简单的 Web Service 入门 (看了包会)

    原理:WebService是一个SOA(面向服务的编程)的架构,它是不依赖于语言,不依赖于平台,可以实现不同的语言间的相互调用,通过Internet进行基于SOAP协议的网络应用间的交互. 作用:主要 ...

  5. Android学习第八弹之改变状态栏的颜色使其与APP风格一体化

    公众号:smart_android 作者:耿广龙|loonggg 点击"阅读原文",可查看更多内容和干货 导语:沉浸式状态栏,改变状态栏的颜色使之与APP风格一体化是不是感觉很漂亮 ...

  6. python3 入门 (三) 函数与lambda表达式、闭包

    函数 是组织好的.可重复使用的.用来实现单一或相关联功能的代码段. 函数代码块以def关键词开头,后接函数标识符名称和圆括号() 任何传入参数和自变量必须放在圆括号中间.圆括号之间可以用于定义参数 函 ...

  7. Nodejs学习笔记(六)--- Node.js + Express 构建网站预备知识

    目录 前言 新建express项目并自定义路由规则 如何提取页面中的公共部分? 如何提交表单并接收参数? GET 方式 POST 方式 如何字符串加密? 如何使用session? 如何使用cookie ...

  8. hdu1542矩阵的并 线段树+扫描线

    求矩阵的并,也就是要求所有的面积.那可以吧总的图形按照矩阵来切割.使其为一块一块. 输入的时候用坐标表示,这里扫描线从下到上扫描.初始时让下面的边为1,上面的为-1: 用一条先从下面开始想上扫描.遇到 ...

  9. Android Studio能干什么

    建立系统工具包可以用来生成,测试,运行您的应用程序和软件包.构建系统是独立于Android的工作室,所以你可以调用它的Android的工作室或从命令行.在你写你的应用程序,你可以使用编译系统的特点: ...

  10. 44.Android之Shape设置虚线、圆角和渐变学习

    Shape在Android中设定各种形状,今天记录下,由于比较简单直接贴代码. Shape子属性简单说明一下:  gradient -- 对应颜色渐变. startcolor.endcolor就不多说 ...