A guide to Matlab for Beginners and Experienced Users——学习笔记【1】
2009-01-01 13:29
766 查看
元旦放假4天,好好学习学习这本书,也算给自己的将来加个筹码吧。 这本书作者似乎多了点,Brian R.Hunt,Ronald L.Lipsman,Jonathan M.Rosenberg,with Kevin R.Coombes,John E.Osborn,and Garret J.Stuck,看着这么多,似乎想起了中国人出书的习俗:编、编著与著的差别,希望我挑的这本不会是编或者编著吧,要不实在是有点郁闷了,寄希望与Cambridge University Press吧,希望他们出的书都比较有水平!
一、Getting Started 第一章的内容似乎有点无聊,大概包括:平台和软件版本、安装与启动、如何运行和输入命令、使用帮助、如何退出。不过有一句话我很喜欢:We know you are anxious to get started using MATLAB,so we will keep this chapter chief.国外人写书的确和国内风格不同,很有种以人为本的意思。
二、Matlab基础
2.1 输入输出>> 1/2 + 1/3ans = 0.8333
>> ezplot('x^3-x')输出[-6,6]的x^3-x的图像,效果很不错,但是需要注意,只能使用单引号,双引号会报错。
2.2 算术 如上所示,可以使用matlab来做算术运算,加减乘除分别使用+-*/来计算,这和我们小学所学的内容对应,呵呵,还是很简单的了。>> 3^2 - (5 + 4)/2 + 6*3ans = 22.5000 对于matlab而言,运算符周围使用空格是一种风格,可以使得你的代码更加清晰易懂,这不是强制的。返回值默认为4位小数,默认的返回值被赋值给变量ans,你当然可以对ans变量进行运算>> ans^2 + sqrt(ans)ans = 510.9934 如果你想给变量另外赋值,也很简单直观>> u=cos(10)u = -0.8391 如果你希望给出更多的小数位,可以如下来做>> format long>> cos(10)ans = -0.83907152907645 类似的,format short可以变回原来的状态。
2.3 代数>> syms x y>> (x-y)*(x+y) ans = (x-y)*(x+y) >> expand(ans) ans = x^2-y^2 >> factor(ans) ans = (x-y)*(x+y)上面的expand表示公式展开,factor表示分解因式>> simplify((x^3-y^3)/(x-y)) ans = x^2+x*y+y^2 >> simplify((x^3+y^3)/(x+y)) ans = x^2-x*y+y^2 >> simplify((x^5-y^5)/(x-y)) ans = x^4+y*x^3+y^2*x^2+y^3*x+y^4simplify表示公式化简2.4 符号表达式的计算>> cos(pi/2)ans = 6.1232e-017>> cos(sym('pi/2')) ans = 0 上面可以看出,MATLAB在计算时是以浮点数进行的,因此对于pi/2的值通过正常的计算方式不会给出结果0,要获得正确的结果就需要将它转化为符号计算。>> sym('1/2')+sym('1/3')ans =5/6 这个结果也比较有趣。 如何设定结果的精度呢?>> vpa(pi,100) ans = 3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117068 即计算pi的后面99位 当然我很BT的算了pi的后面10万位,结果放在这里了http://liuxin-blog.appspot.com/files/pi.html2.5 解方程>> solve('x^5-1=0') ans = [ 1][ 1/4*5^(1/2)-1/4+1/4*i*2^(1/2)*(5+5^(1/2))^(1/2)][ -1/4*5^(1/2)-1/4+1/4*i*2^(1/2)*(5-5^(1/2))^(1/2)][ -1/4*5^(1/2)-1/4-1/4*i*2^(1/2)*(5-5^(1/2))^(1/2)][ 1/4*5^(1/2)-1/4-1/4*i*2^(1/2)*(5+5^(1/2))^(1/2)] >> solve('x^5+4*x-3=0') ans = [ -1.1497018561916804173894195017101-1.0229129378579045309241618357603*i][ -1.1497018561916804173894195017101+1.0229129378579045309241618357603*i][ .70611491577418302526709165976282][ .79664439830458890475587367182865-1.0767566643318152363781938845220*i][ .79664439830458890475587367182865+1.0767566643318152363781938845220*i] 很easy的了,不过就是不知道MATLAB是怎么算的,应该来说,这个东东对工科的挺好,对理科就一般了。理科生嘛,建议去读读M文件,知道计算的原理。>> solve('x+y=1','y')ans =-x+1 换言之,如果方程个数少于自变量个数的话,那么不可能解出最终结果的,因此需要定制表达变量。>> [x,y]=solve('x^2+y^2-z^2=0','x^2-y^2-3*z=1') x = [ 1/2*(2+2*z^2+6*z)^(1/2)][ -1/2*(2+2*z^2+6*z)^(1/2)][ 1/2*(2+2*z^2+6*z)^(1/2)][ -1/2*(2+2*z^2+6*z)^(1/2)] y = [ 1/2*(-2+2*z^2-6*z)^(1/2)][ 1/2*(-2+2*z^2-6*z)^(1/2)][ -1/2*(-2+2*z^2-6*z)^(1/2)][ -1/2*(-2+2*z^2-6*z)^(1/2)]
>> z=solve('x^2+y^2-z^2=0','x^2-y^2-3*z=1')z = x: [4x1 sym] y: [4x1 sym]>> z.x(1),z.x(2) ans = 1/2*(2+2*z^2+6*z)^(1/2) ans = -1/2*(2+2*z^2+6*z)^(1/2) 查找最近的结果>> fzero(inline('exp(-x)-sin(x)'),0)ans = 0.5885>> fzero(inline('exp(-x)-sin(x)'),2)ans = 3.0964>> fzero(inline('exp(-x)-sin(x)'),5)ans = 6.28502.6 向量与矩阵创建向量:>> x=[1 2 3 4 5]x = 1 2 3 4 5>> x=[2,3,4,5,6]x = 2 3 4 5 6>> x=1:9x = 1 2 3 4 5 6 7 8 9>> x=1:2:9x = 1 3 5 7 9向量元素的提取:>> x(1)ans = 1
转置>> x'ans = 1 3 5 7 9向量的操作>> xx = 1 3 5 7 9>> yy = 0 2 4 6 8>> x+yans = 1 5 9 13 17>> x-yans = 1 1 1 1 1>> x.*yans = 0 6 20 42 72>> y./xans = 0 0.6667 0.8000 0.8571 0.8889创建矩阵>> A=[1,2,3,4;2,3,4,5;3,4,5,6;4,5,6,7]A = 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7>> xx = 1 2 3 4>> A*x'ans = 30 40 50 602.7 内置函数 例如 sqrt,sin,cos,tan,atan,log,exp等通用函数,也包括gamma,erf,besselj等更专用的函数。2.8 用户自定义函数 使用inline可以自定义函数>> f=inline('x^2','x')f = Inline function: f(x) = x^2>> f(2)ans = 42.9 画图ezplot>> ezplot('x^2',[-5,5])
ezplot全民叫做easy plot,从名字就知道了,它可以提供简易的画图功能。 为了让函数看起来更像函数,可以先将变量符号化>> syms 'x'>> ezplot(x^2-x+sin(x),[-2,2])>> title "function 1"
该命令可以设置图像的标题>> axis([-2,2,-0.5,5.5])
该命令可以调整坐标轴,前面2个表示x坐标轴,后面2个表示y坐标轴plot>> x=1:9x = 1 2 3 4 5 6 7 8 9>> y=2:10y =
2 3 4 5 6 7 8 9 10
>> plot(x,y)
简单地说,plot可以对传入的x,y变量进行画图,当然,改变x,y就可以改变画图方式,如此可用性就很大了。>> x=1:9;y=sin(x)+cos(x);>> plot(x,y) 如何将多个图形画在同一个图形上,在matlab中有多种方式>> ezplot(’exp(-x)’, [0 10])>> hold on>> ezplot(’sin(x)’, [0 10])>> hold off>> title ’exp(-x) and sin(x)’
>> X = 0:0.1:10;>> plot(X, exp(-X), X, sin(X))2.10 M文件format longx = [0.1, 0.01, 0.001];y = sin(x)./x
将上面3行存在文件中f1.m,切换到该目录,在命令行输入文件名f1即可得到输出y = 0.99833416646828 0.99998333341667 0.99999983333334
一、Getting Started 第一章的内容似乎有点无聊,大概包括:平台和软件版本、安装与启动、如何运行和输入命令、使用帮助、如何退出。不过有一句话我很喜欢:We know you are anxious to get started using MATLAB,so we will keep this chapter chief.国外人写书的确和国内风格不同,很有种以人为本的意思。
二、Matlab基础
2.1 输入输出>> 1/2 + 1/3ans = 0.8333
>> ezplot('x^3-x')输出[-6,6]的x^3-x的图像,效果很不错,但是需要注意,只能使用单引号,双引号会报错。
2.2 算术 如上所示,可以使用matlab来做算术运算,加减乘除分别使用+-*/来计算,这和我们小学所学的内容对应,呵呵,还是很简单的了。>> 3^2 - (5 + 4)/2 + 6*3ans = 22.5000 对于matlab而言,运算符周围使用空格是一种风格,可以使得你的代码更加清晰易懂,这不是强制的。返回值默认为4位小数,默认的返回值被赋值给变量ans,你当然可以对ans变量进行运算>> ans^2 + sqrt(ans)ans = 510.9934 如果你想给变量另外赋值,也很简单直观>> u=cos(10)u = -0.8391 如果你希望给出更多的小数位,可以如下来做>> format long>> cos(10)ans = -0.83907152907645 类似的,format short可以变回原来的状态。
2.3 代数>> syms x y>> (x-y)*(x+y) ans = (x-y)*(x+y) >> expand(ans) ans = x^2-y^2 >> factor(ans) ans = (x-y)*(x+y)上面的expand表示公式展开,factor表示分解因式>> simplify((x^3-y^3)/(x-y)) ans = x^2+x*y+y^2 >> simplify((x^3+y^3)/(x+y)) ans = x^2-x*y+y^2 >> simplify((x^5-y^5)/(x-y)) ans = x^4+y*x^3+y^2*x^2+y^3*x+y^4simplify表示公式化简2.4 符号表达式的计算>> cos(pi/2)ans = 6.1232e-017>> cos(sym('pi/2')) ans = 0 上面可以看出,MATLAB在计算时是以浮点数进行的,因此对于pi/2的值通过正常的计算方式不会给出结果0,要获得正确的结果就需要将它转化为符号计算。>> sym('1/2')+sym('1/3')ans =5/6 这个结果也比较有趣。 如何设定结果的精度呢?>> vpa(pi,100) ans = 3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117068 即计算pi的后面99位 当然我很BT的算了pi的后面10万位,结果放在这里了http://liuxin-blog.appspot.com/files/pi.html2.5 解方程>> solve('x^5-1=0') ans = [ 1][ 1/4*5^(1/2)-1/4+1/4*i*2^(1/2)*(5+5^(1/2))^(1/2)][ -1/4*5^(1/2)-1/4+1/4*i*2^(1/2)*(5-5^(1/2))^(1/2)][ -1/4*5^(1/2)-1/4-1/4*i*2^(1/2)*(5-5^(1/2))^(1/2)][ 1/4*5^(1/2)-1/4-1/4*i*2^(1/2)*(5+5^(1/2))^(1/2)] >> solve('x^5+4*x-3=0') ans = [ -1.1497018561916804173894195017101-1.0229129378579045309241618357603*i][ -1.1497018561916804173894195017101+1.0229129378579045309241618357603*i][ .70611491577418302526709165976282][ .79664439830458890475587367182865-1.0767566643318152363781938845220*i][ .79664439830458890475587367182865+1.0767566643318152363781938845220*i] 很easy的了,不过就是不知道MATLAB是怎么算的,应该来说,这个东东对工科的挺好,对理科就一般了。理科生嘛,建议去读读M文件,知道计算的原理。>> solve('x+y=1','y')ans =-x+1 换言之,如果方程个数少于自变量个数的话,那么不可能解出最终结果的,因此需要定制表达变量。>> [x,y]=solve('x^2+y^2-z^2=0','x^2-y^2-3*z=1') x = [ 1/2*(2+2*z^2+6*z)^(1/2)][ -1/2*(2+2*z^2+6*z)^(1/2)][ 1/2*(2+2*z^2+6*z)^(1/2)][ -1/2*(2+2*z^2+6*z)^(1/2)] y = [ 1/2*(-2+2*z^2-6*z)^(1/2)][ 1/2*(-2+2*z^2-6*z)^(1/2)][ -1/2*(-2+2*z^2-6*z)^(1/2)][ -1/2*(-2+2*z^2-6*z)^(1/2)]
>> z=solve('x^2+y^2-z^2=0','x^2-y^2-3*z=1')z = x: [4x1 sym] y: [4x1 sym]>> z.x(1),z.x(2) ans = 1/2*(2+2*z^2+6*z)^(1/2) ans = -1/2*(2+2*z^2+6*z)^(1/2) 查找最近的结果>> fzero(inline('exp(-x)-sin(x)'),0)ans = 0.5885>> fzero(inline('exp(-x)-sin(x)'),2)ans = 3.0964>> fzero(inline('exp(-x)-sin(x)'),5)ans = 6.28502.6 向量与矩阵创建向量:>> x=[1 2 3 4 5]x = 1 2 3 4 5>> x=[2,3,4,5,6]x = 2 3 4 5 6>> x=1:9x = 1 2 3 4 5 6 7 8 9>> x=1:2:9x = 1 3 5 7 9向量元素的提取:>> x(1)ans = 1
转置>> x'ans = 1 3 5 7 9向量的操作>> xx = 1 3 5 7 9>> yy = 0 2 4 6 8>> x+yans = 1 5 9 13 17>> x-yans = 1 1 1 1 1>> x.*yans = 0 6 20 42 72>> y./xans = 0 0.6667 0.8000 0.8571 0.8889创建矩阵>> A=[1,2,3,4;2,3,4,5;3,4,5,6;4,5,6,7]A = 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7>> xx = 1 2 3 4>> A*x'ans = 30 40 50 602.7 内置函数 例如 sqrt,sin,cos,tan,atan,log,exp等通用函数,也包括gamma,erf,besselj等更专用的函数。2.8 用户自定义函数 使用inline可以自定义函数>> f=inline('x^2','x')f = Inline function: f(x) = x^2>> f(2)ans = 42.9 画图ezplot>> ezplot('x^2',[-5,5])
ezplot全民叫做easy plot,从名字就知道了,它可以提供简易的画图功能。 为了让函数看起来更像函数,可以先将变量符号化>> syms 'x'>> ezplot(x^2-x+sin(x),[-2,2])>> title "function 1"
该命令可以设置图像的标题>> axis([-2,2,-0.5,5.5])
该命令可以调整坐标轴,前面2个表示x坐标轴,后面2个表示y坐标轴plot>> x=1:9x = 1 2 3 4 5 6 7 8 9>> y=2:10y =
2 3 4 5 6 7 8 9 10
>> plot(x,y)
简单地说,plot可以对传入的x,y变量进行画图,当然,改变x,y就可以改变画图方式,如此可用性就很大了。>> x=1:9;y=sin(x)+cos(x);>> plot(x,y) 如何将多个图形画在同一个图形上,在matlab中有多种方式>> ezplot(’exp(-x)’, [0 10])>> hold on>> ezplot(’sin(x)’, [0 10])>> hold off>> title ’exp(-x) and sin(x)’
>> X = 0:0.1:10;>> plot(X, exp(-X), X, sin(X))2.10 M文件format longx = [0.1, 0.01, 0.001];y = sin(x)./x
将上面3行存在文件中f1.m,切换到该目录,在命令行输入文件名f1即可得到输出y = 0.99833416646828 0.99998333341667 0.99999983333334
相关文章推荐
- A guide to Matlab for Beginners and Experienced Users——学习笔记【2】
- Swift学习笔记 Introduction to Swift Programming for beginners
- The Focal easy guide to Maya 5: for new users and professionals
- NumPy学习笔记 (附录: NumPy for Matlab Users)
- The Definitive Guide To Django 2 学习笔记(一) Views and UrL confsRL
- A guide to convolution arithmetic for deep learning学习笔记
- R-CNN学习笔记2:Rich feature hierarchies for accurate object detection and semantic segmentation
- Techno Security's Guide to Managing Risks for IT Managers, Auditors and Investigators
- 九十分钟极速入门Linux——Linux Guide for Developments 学习笔记
- VBA学习笔记(4)-Section, Row, and Cell Indices for Shapes
- How to read and understand a scientific paper: a guide for non-scientists
- [分布式系统学习]阅读笔记 Distributed systems for fun and profit 之一 基本概念
- How to Read and Understand a Scientific Paper: A Step-by-Step Guide for Non-Scientists
- The Definitive Guide To Django 2 学习笔记(五) 第四章 模板 (一)基本模板系统
- The Definitive Guide To Django 2 学习笔记(六) 第四章 模板 (二)使用模板系统
- cilk之User Guide学习笔记(4)cilk_for的分析
- 深度学习论文笔记--FaceNet: A Unified Embedding for Face Recognition and Clustering
- 学习MNIST For ML Beginners笔记
- View Programming Guide for iOS 学习笔记_1
- OSWorkflow: A guide for Java developers and architects to integrating, open-source Business Process Management (Paperback)