收藏 分销(赏)

Matlab-2013a教程.doc

上传人:丰**** 文档编号:9704392 上传时间:2025-04-03 格式:DOC 页数:111 大小:11.17MB 下载积分:20 金币
下载 相关 举报
Matlab-2013a教程.doc_第1页
第1页 / 共111页
Matlab-2013a教程.doc_第2页
第2页 / 共111页


点击查看更多>>
资源描述
Matlab-2013a教程P121 目录 创建一维数组变量P11 创建数组变量的一般方法P12 创建二维数组变量P12 一、逻辑运算"&&"与"&","||"与"|"的区别P2 二、norm命令P2 三、mean(A),求每一列的均值;Mean(A,2)求每一行的均值 四、std命令,求均值和标准偏差 五、corrcoef,求协方差,原矩阵为,求出的矩阵维数为,P3,单步计算与matlab计算,存在差异,还没明白 一、"&&"与"&","||"与"|"的区别 A&B (1)首先判断A的逻辑值,然后判断B的值,然后进行逻辑与的计算。 (2)A和B可以为矩阵(e.g. A=[1 0],B=[0 0])。 A&&B (1)首先判断A的逻辑值,如果A的值为假,就可以判断整个表达式的值为假,就不需要再判断B的值。 (2)A和B不能是矩阵,只能是标量。 "|"与“||”同理。 二、norm函数可计算几种不同类型的矩阵范数,根据p的不同可得到不同的范数 1、如果A为矩阵 n=norm(A) 返回A的最大奇异值,即max(svd(A)) n=norm(A,p) 根据p的不同,返回不同的值 p 返回值 1 返回A中最大一列和,即max(sum(abs(A))) 2 返回A的最大奇异值,和n=norm(A)用法一样 inf 返回A中最大一行和,即max(sum(abs(A’))) ‘fro’ A和A‘的积的对角线和的平方根,即sqrt(sum(diag(A'*A))) 3、如果A为向量 norm(A,p) 返回向量A的p范数,即返回 sum(abs(A).^p)^(1/p),对任意 1 三、mean命令 mean(A),求每一列的均值;mean(A,2)求每一行的均值 A=[1,2,3;3,3,6;4,6,8;4,7,7] mean(A) ans = 3 4.5 6 K>> mean(A,2) ans = 2 4 6 6 四、std(A),求标准偏差 x可以是一行的matrix或者一个多行matrix矩阵如果只有一行,那么就是算一行的标准偏差,如果有多行,就是算每一列的标准偏差。 A=[1,2,3;3,3,6;4,6,8;4,7,7]; std(A) ans = 1.4142 2.3805 2.1602 计算过程: 每列平均值:=(1+3+4+4)/4=3;=(2+3+6+7)/4=4.5;=(3+6+8+7)/4=6 第一列标准偏差:=1.4142 五、corrcoef,求协方差,原矩阵为,求出的协方差矩阵维数为,单步计算与matlab计算,存在差异,还没明白 命令原理:协方差(i,j)=(第i列所有元素-第i列均值)*(第j列所有元素-第j列均值)/(样本数-1)。样本数即为每列元素 (1)A=[1,3,4,5;2,6,2,2] %2x4矩阵 A = 1 3 4 5 2 6 2 2 corrcoef(A) ans =;求出的协方差矩阵维数为4x4 1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 计算过程: A = 1 3 4 5 2 6 2 2 列平均数 1.5 4.5 3 3.5;样本数即为每列元素=n-1=2-1=1 E(1,1)=(第1列所有元素-第1列均值)*(第1列所有元素-第1列均值)/(样本数-1) =(1-1.5,2-1.5)*(1-1.5,2-1.5)T/(2-1)=0.5 E(1,2)=(第1列所有元素-第1列均值)*(第2列所有元素-第2列均值)/(样本数-1) =(1-1.5,2-1.5)*(3-4.5,6-4.5)T/(2-1)=1.5 E(1,3)=(第1列所有元素-第1列均值)*(第3列所有元素-第3列均值)/(样本数-1) =(1-1.5,2-1.5)*(4-3,2-3)T/(2-1)=-1 E(1,4)=(第1列所有元素-第1列均值)*(第4列所有元素-第4列均值)/(样本数-1) =(1-1.5,2-1.5)*(5-3.5,2-3.5)T/(2-1)=-1.5 E(2,1)=(第2列所有元素-第2列均值)*(第1列所有元素-第1列均值)/(样本数-1) =(3-4.5,6-4.5)*(1-1.5,2-1.5)T/(2-1)=1.5 E(2,2)=(第2列所有元素-第2列均值)*(第2列所有元素-第2列均值)/(样本数-1) =(3-4.5,6-4.5)*(3-4.5,6-4.5)T/(2-1)=6.125 (2)A=[1,3,4,5;2,6,2,2]’%注意与上面矩阵差别,是转置矩阵,4x2矩阵 A = 1 2 3 6 4 2 5 2 K>> corrcoef(A) ans =;求出的协方差矩阵维数为2x2 1 -0.09759 -0.09759 1 计算过程: A = 1 2 3 6 4 2 5 2 列平均数 3.25 3 ;样本数即为每列元素=n-1=4-1=3 E(1,1)=(第1列所有元素-第1列均值)*(第1列所有元素-第1列均值)/(样本数-1) =(1-3.25,3-3.25,4-3.25,5-3.25)*(1-3.25,3-3.25,4-3.25,5-3.25)T/(4-1)=25.52 E(1,2)=(第1列所有元素-第1列均值)*(第2列所有元素-第1列均值)/(样本数-1) =(1-3.25,3-3.25,4-3.25,5-3.25)*(2-3,6-3,2-3,2-3)T/(4-1)=1.83 E(2,1)=(第2列所有元素-第2列均值)*(第1列所有元素-第1列均值)/(样本数-1) =(2-3,6-3,2-3,2-3)*(1-3.25,3-3.25,4-3.25,5-3.25)T/(4-1)=1.83 E(2,2)=(第2列所有元素-第2列均值)*(第2列所有元素-第2列均值)/(样本数-1) =(2-3,6-3,2-3,2-3)*(2-3,6-3,2-3,2-3)T/(4-1)=4 例:计算sin(450) >>sin(45*pi/180) ans= 0.7071 Matlab中正弦函数sin是常见的函数 它的参数值是以“弧度”为单位的 pi是Matlab的预定义变量,pi=3.14159…. 例:计算 >>sqrt(2*exp(4.92+0.5)+1) ans= 21.2781 Matlab中开平方sqrt(x),是英文square root Matlab中指数函数是常见的表达方式。 例:计算y= >>y=2*sin(0.3*pi)/(1+sqrt(5)) y= 0.5000 例:计算y= >>y=2*cos(0.3*pi)/(1+sqrt(5)) y= 0.3633 计算半径为5.2m的圆的周长和面积 >>radius=5.2; >>area=pi*5.2^2,circle_len=2*pi*5.2 area= 84.9487 circle_len= 32.6726 以上两例,命令行中用到了等号“=”。计算结果不再是赋值给“ans”,而是赋给用户指定的变量y,area,circle_len。 无论是预定义变量还是用户自定义变量,都被存储在系统的工作空间内(Workspace),即系统定义的一个存储窗口变量的内存空间。 区别(有无;号):radius=5.2;x=5;和radius=5.2;x=5区别 radius=5.2;x=5;两语句,在命令窗口没有显示 radius=5.2;x=5前一语句在命令窗口无显示,后一语句在命令窗口有显示 x= 5 Who、Whos命令用来显示工作空间的变量。 clear命令用来清除工作空间的变量。(clc命令清除命令窗口) >>who %显示工作空间命令 Your variables are: area circle_len radius >>whos %显示工作空间命令 Name Size Bytes Class Attributes area 1x1 8 double circle_len 1x1 8 double radius 1x1 8 double >>clear area %清除工作空间area变量 Your variables are: circle_len radius >>whos Name Size Bytes Class Attributes circle_len 1x1 8 double radius 1x1 8 double 数值显示格式设置 窗口命令及语法格式:format 显示格式关键字 如:format %15位数字显示,没有使用过 long 常见通用命令 clc:清除命令窗口的显示内容 clear:清除Matlab工作空间中保存的变量 who或whos:显示Matlab工作空间中变量信息 dir:显示当前工作目录的文件和子目录清单 cd:显示或设置当前工作目录 type:显示指定m文件的内容 help或doc:获取在线帮助 quit或exit:关闭/退出Matlab 历史窗口: 首先记录每次启动时间 并记录在命令窗口输入命令,在此运行期间,输入的所有命令被记录为一组,并以此次启动时间为标志。 使用历史窗口: 可以查看命令窗口输入过的命令或语句 可以选择一条或多条命令执行拷贝、执行、创建m文件等。 要清楚历史记录,可以选择exit菜单中的clear command history命令。 当前目录窗口:指Matlab运行时的工作目录 只有在当前目录和搜索路径下的文件、函数才可以被运行和调用。 如果没有特殊指明,数据文件也将存放在当前目录下; 用户可以将自己的工作目录设置成当前目录,从而使得所有操作都在当前目录中进行。 Lookfor(条件比较宽松)例:inverse;没有使用过 窗口式综合帮助信息(文字、公式、图形) doc helpwin 求方程2x5-3x3+71x2-9x+13=0的全部根 p=[2,0,-3,71,-9,13];%注意p的大小写,如此语句为大写,后语句为小写,就不识别 x=roots(p); x= -3.4914 + 0.0000i 1.6863 + 2.6947i 1.6863 - 2.6947i 0.0594 + 0.4251i 0.0594 - 0.4251i 求解线性方程组: a=[2,3,-1;8,2,3;45,3,9]; b=[2;4;23]; x=inv(a)*b x = 0.5531 0.2051 -0.2784 inv是矩阵求逆的意思。具体用法A=inv(B),其中B是输入的可逆矩阵,输出A就是B的逆矩阵,逆矩阵满足性质AB=BA=E(E是单位阵)。如果输入的是不可逆矩阵会弹出警告,并返回inf。 符号计算 syms x y z [x,y,z]=solve(2*x+3*y-z-2,8*x+2*y+3*z-4,45*x+3*y+9*z-23) syms是定义符号变量,sym是将字符或者数字转换为字符 比如 syms x y %就是定了符号变量x y以后x y就可以直接使用了,有他们运算出来的结果也是符号变量 当然上面的也可以x=sym('x'),y=sym('y') syms('a+b') %就是将a+b转化为符号表达式,此语句使用有问题,没通过 两者有不同的使用场合 比如符号变量涉及的个数比较少,但是使用频率比较高,那么就是使用syms 但是如果个数多,但是使用频率比较少 则使用sym solve函数,求解代数方程,符号解析解,只是部分的结果,并不是全部解 求解 quad(‘x.*log(1+x)’,0,1)%此语句没有通过,在Matlab中修改符号’’后,通过了 或 syms x nt(‘x.*log(1+x)’,0,1) %此语句没有通过 多项式曲线拟合 x=[1,2,3,4,5,6,7,8,9,10] y=[1.2,3,4,4,5,4.7,5,5.2,6,7.2],y是由y(x)=x3-2x2-5在对应x点产生的值 注:y(x)=x3-2x2-5 在matlab中,y=[1 -2 0 -5] p1=polyfit(x,y,1) p3=polyfit(x,y,3) x2=1:0.1:10; y1=polyval(p1,x2) );%计算拟合函数在x处的值 y3=polyval(p3,x2) plot(x,y,’*’,x2,y1,’:’,x2,y3)%此语句有问题,是符号’要在matlab中重写,如下 plot(x,y,'*',x2,y1,':',x2,y3) 用程序测试拟合多少次 syms c; x=[1,2,3,4,5,6,7,8,9,10]; y=[1.2,3,4,4,5,4.7,5,5.2,6,7.2]; p1=polyfit(x,y,1); p3=polyfit(x,y,3); x2=1:0.1:10; y1=polyval(p1,x2) ;%计算拟合函数在x处的值 y3=polyval(p3,x2); %plot(x,y,'*',x2,y1,':',x2,y3) for i=1:5 y2=polyfit(x,y,i); Y=polyval(y2,x);%计算拟合函数在x处的值 if sum((Y-y).^2)<0.4 c=i break; end end 输出结果c=3,即拟合3次可以使sum((Y-y).^2)<0.4 3)矩阵运算函数 MATLAB的运算以数组(array)及矩阵(matrix)方式来进行,但二者运算性质明显不同,数组强调元素对元素的运算,所以在运算符前要加.,而矩阵则采用线性代数的运算方式。请看下表: Matlab中把复数的表达:z=a+bi,其中a,b为实数 Matlab把复数看作一个整体,象计算实数一样计算复数 例:复数z1=3+4i,z2=1+2i,z3=2 计算 >> z1=3+4*i,z2=1+2*i,z3=2*exp(i*pi/6),z=z1*z2/z3 z1 = 3.0000 + 4.0000i z2 = 1.0000 + 2.0000i z3 = 1.7321 + 1.0000i z = 0.3349 + 5.5801i >>z_real=real(z),z_image=imag(z),%注意是imag而不是image z_real = 0.3349 z_image = 5.5801 >>z_angle=angle(z),z_length=abs(z),%对于复数,abs函数是求模 z_angle = 1.5108 z_length = 5.5902 第二章 Matlab数据及运算 Matlab数据类型丰富,除数值型、字符型等基本数据类型外,还有结构体、单元等更为复杂的数据类型。 各种数据类型都以矩阵形式存在,矩阵是Matlab最基本的数据对象,并且矩阵的运算是定义在复数域上的。 数组的概念 一维数组变量的创建 二维数组变量的创建 数组元素的标识与寻访 数组运算 多维数组 数组(array)的概念 数组的分类 一维数组,也称为向量(vector) 行向量(row vector)、列向量(column vector) 二维数组(矩阵matrix) 创建一维数组变量 第一种方法:使用方括号“[]”操作符 例:创建数组(行向量)a=[1 3 pi 3+5i] >> a=[1 3 pi 3+5i]%or a=[1,3,pi,3+5i] a = 1.0000 + 0.0000i 3.0000 + 0.0000i 3.1416 + 0.0000i 3.0000 + 5.0000i 所有的向量元素必须在操作符“[]”之内 向量元素间用空格或英文的逗号“,”分开 第二种方法:使用冒号“:”操作符 >>b=1:10 b = 1 2 3 4 5 6 7 8 9 10 例:键入并执行c=1:2:10和d=1:2:9 >> c=1:2:10(间隔是2) c = 1 3 5 7 9 >> d=1:2:9 c = 1 3 5 7 9 利用冒号“:“操作符创建行向量的基本语法格式: x=起:增量:止 起表示新向量x的第一个元素 新向量x的最后一个元素不能大于止 增量可正可负,若负,则起>止;若正,则起<止,否则创建的为空向量。 若增量=1,则可简写为x=起:止 第三种方法:利用函数linspace 函数linspace的基本语法 x=linspace(x1,x2,n) 该函数生成一个由n个元素组成的行向量; x1为其第一个元素 x2为其最后一个元素 x1、x2之间的间隔=(x2-x1)/(n-1) 如忽略参数n,则系统生成100个元素的行向量 例:执行x=linspace(1,2,5) >> x=linspace(1,2,5) x = 1.0000 1.2500 1.5000 1.7500 2.0000 第四种方法:利用函数logspace 列向量的创建 使用方括号“[]”操作符,并使用分号“;”分割行。 例:执行x=[1;2;3] >> x=[1;2;3] x = 1 2 3 使用冒号“:”操作符 例:执行x=(1:3)’ %“’”表示矩阵的转置 >> x=(1:3) %注意区别 x = 1 2 3 >> x=(1:3)' %注意区别 x = 1 2 3 创建数组变量的一般方法 创建变量的赋值语句的一般格式 var=expression var为变量名 expression为matlab的合法表达式 可以是单独的常数值或数值数组 也可以由常数值、其它变量(部分或全部)、数值数组和运算符(+、-)构成。 例:执行a=[1 1+6];b=[a 6 7];c=[6 a 7];d=[6 a 7 a]; a = 1 7 b = 1 7 6 7 c = 6 1 7 7 d = 6 1 7 7 1 7 创建二维数组变量 第一种方法:使用方括号“[]”操作符 使用规则 数组元素必须在“[]”内键入; 行与行之间须用分号“:”间隔,也可以在分行处用回车键间隔; 行内元素用空格或逗号“,”间隔。 例:执行a2=[1 2 3;4 5 6;7 8 9] a2 = 1 2 3 4 5 6 7 8 9 a2=[1:3;4:6;7:9] a2 = 1 2 3 4 5 6 7 8 9 例:由向量构成二维数组 >>a=[1 2 3];b=[2 3 4]; >>c=[a;b];%形成2x3矩阵 c = 1 2 3 2 3 4 >>c1=[a b];%形成1x6的矩阵 c1 = 1 2 3 2 3 4 第二种方法:函数方法 函数ones(生成全1矩阵)、zeros(生成全0矩阵)、reshape 例:创建全1的3x3数组 >>ones(3) 例:创建全1的3x4数组 >>ones(3,4) ans = 1 1 1 1 1 1 1 1 1 1 1 1 例:reshape的使用 >>a=-4:4 a = -4 -3 -2 -1 0 1 2 3 4 >>b=reshape(a,3,3) b = -4 -1 2 -3 0 3 -2 1 4 数组元素的排列顺序,从上到下按列排列 要求数组的元素总数不变。 数组元素的标识与寻访 数组元素的标识 全下标 单下标 例:size、length函数 size函数返回变量的大小,即变量数组的行列数 length函数返回变量数组的最大维数 >>a=ones(4,6)*6 >>m=size(a) m = 4 6,返回行列数为4、6 >>length(a) ans = 6 >>b=1:5 >>length(b) >>c=b’ c = 1 2 3 4 5 >>length(c) ans = 5 6.3 数组积分 一元函数的数组积分常用指令:quad和quadl;一般来说,quadl比quad更有效。 上面未完 求定积分 MATLAB指令quda和quadl求积分 >>fun=inline(‘exp(-x.*x)’,’x’);%数组乘符号.*的采用是必须的 >>Isim=quad(fun,0,1),I8=quadl(fun,0,1) Isim=0.7468 I8=0.7468 求解定积分 用quad指令求积分 >>ff=inline(‘sqrt(log(1./x))’,’x’) >>Isim=quad(ff,0,1) Isim=0.8862 111 / 111
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服