Todd's Matlab讲义第1讲:向量,函数和作图
向量
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讲:向量,函数和作图的更多相关文章
- Todd's Matlab讲义第4讲:控制误差和条件语句
误差和残量 数值求解方程\(f(x)=0\)的根,有多种方法测算结果的近似程度.最直接的方法是计算误差.第\(n\)步迭代结果与真值\(x^\*\)的差即为第\(n\)步迭代的误差: \begin{e ...
- Todd's Matlab讲义第2讲:Matlab 编程
Matlab也可以编程,可存为以.m为后缀的文件,称为M文件.M文件有两种:函数和脚本. 函数程序 点击新建图标,在打开的窗口里输入如下内容: function y = myfunc (x) y = ...
- Todd's Matlab讲义第5讲:二分法和找根
二分法和if ... else ... end 语句 先回顾一下二分法.要求方程\(f(x)=0\)的根.假设\(c = f(a) < 0\)和\(d = f(b) > 0\),如果\(f ...
- Todd's Matlab讲义第3讲:牛顿法和for循环
方程数值求解 下面几讲,我们将聚集如下方程的解法: \begin{equation} f(x)=0 \tag{3.1}\label{3.1} \end{equation} 在微积分课程中,我们知道,许 ...
- Todd's Matlab讲义第6讲:割线法
割线法 割线法求解方程\(f(x)=0\)的根需要两个接近真实根\(x^\*\)的初值\(x_0\)和\(x_1\),于是得到函数\(f(x)\)上两个点\((x_0,y_0=f(x_0))\)和\( ...
- 【Matlab开发】matlab中norm范数以及向量点积、绘图设置相关
[Matlab开发]matlab中norm范数以及向量点积.绘图设置相关 标签(空格分隔): [Matlab开发] 声明:引用请注明出处http://blog.csdn.net/lg125915677 ...
- MATLAB实现最优低通滤波器的函数
MATLAB实现最优低通滤波器的函数 % Fs --Data rate % Fpass --pass band % Fstop --Cutoff frequencies % Apass ...
- [转]matlab语言中的assert断言函数
MATLAB语言没有系统的断言函数,但有错误报告函数 error 和 warning.由于要求对参数的保护,需要对输入参数或处理过程中的一些状态进行判断,判断程序能否/是否需要继续执行.在matlab ...
- matlab练习程序(求向量间的旋转矩阵与四元数)
问题是这样,如果我们知道两个向量v1和v2,计算从v1转到v2的旋转矩阵和四元数,由于旋转矩阵和四元数可以互转,所以我们先计算四元数. 我们可以认为v1绕着向量u旋转θ角度到v2,u垂直于v1-v2 ...
随机推荐
- 20145234黄斐《信息安全系统设计基础》GDB调试汇编堆栈过程分析
堆栈跟踪 首先编辑一个程序 用gcc编译,再使用gdb调试,发现gdb尚未下载 下载后重新运行gdb 设置断点:b+行号或者"main" 运行:r frame:打印出的信息:栈的层 ...
- 关于 iOS 10 中 ATS / HTTPS /2017 问题
本文于 2016 年 11 月 28 日按照 Apple 最新的文档和 Xcode 8 中的表现进行了部分更新. WWDC 15 提出的 ATS (App Transport Security) 是 ...
- java之运算符
package com.simope.myTest; import java.util.HashMap; import java.util.Iterator; import java.util.Map ...
- Unity Networking API文档翻译(二):The High Level API
高级API (HLAPI) 是用来提供给Unity 创建多人在线游戏的组件.它是在底层传输层的基础上构建的, 对多人在线游戏提供了很多通用的功能.当传输层支持各种网络拓扑结构的时候,HLAPI是一个功 ...
- 游戏服务器端引擎--DogSE的设计
就DogSE的设计目标来说,它定位为千人左右的页游服务器,在不修改任何底层模块的情况下可以快速的写各种游戏业务.就算是新人在熟悉2~3天后也可以开始写一个游戏. 项目可以从github获得,访问地址: ...
- LINUX下软件包的安装与使用
1.安装RPM包 rpm -ivh 包全名 2.查询某个包是否安装 rpm -q 包名 3.查询已安装的包的信息(主要看版本) rpm -qi 包名 4.查询已安装包的安装位置 rpm -ql 包名 ...
- 琐碎--选择文件夹(路径)+生产txt格式的log+数据库操作方式
记录日常工作常用到的一些方法: 1 选择文件操作,并将文件的路径记录下来: OpenFileDialog ofd = new OpenFileDialog(); ofd.Multiselect = f ...
- JavaScript表单处理(上)
为了分担服务器处理表单的压力,JavaScript提供了一些解决方案,从而大大打破了处处依赖服务器的局面. 发文不易,转载请亲注明出处,谢谢! 一.表单介绍 在HTML中,表单是由<form& ...
- CreateCompatibleDC与BitBlt 学习
CreateCompatibleDC与BitBlt CreateCompatibleDC 创建一个与指定设备一致的内存设备描述表. HDC CreateCompatibleDC(HDC hdc //设 ...
- Java web 学习之旅
java web学习之旅 来公司十天了,感觉已经慢慢地融入了这个环境中,几个学长人都很好,都是在他们帮助下,我才能比较顺利的开始了学习java web的旅途. 来这里学习的第一个阶段是做一个简单的用户 ...