plot(y)
3:把多个图放在一块:subplot(子图)
eg subplot(3,1,2)//一共三行一列,此图在第2个 eg subplot(3,2,5)//一共三行两列,此图在第5个 4:指定图形标题栏:title('') eg title('频谱图') 注意,要加''
指定x(自变量)轴标注文字:xlabel('') 指定y(自变量)轴标注文字:ylabel('') 5:坐标轴的范围的刻画:axis[x1,x2,y1,y2] 以坐标纸方式显示: grid 应用: eg x=[0:9]; 定义x轴 y=sin(2*pi/30*x)./x; 定义y轴
subplot(3,1,1); 在适当位置处画出一个空白的图像 plot(x,y); 填充此图像
title('一个例子'); 为此图像加标识 6:把多个图形画于同一个坐标中 eg plot(t, y, t, y0, t, -y0)
plot(t, y, '-r', t, y0, ':b', t, -y0, ':b')//'-r'表示红色线;':b'表示虚蓝线
如果后续图形也要画在当前的同一图形窗内,并且希望二条线同时存在,可输入:hold on;hold off关闭。 7:不同的线的画法
具体的直角坐标图绘图格式:plot(x,y,'cm')
式中x为自变量,y为因变量,c为颜色标记,m为线型标记符
b 蓝色 g 绿色 r 红色 c 青色 m 洋红 y 黄色 k 黑色 w 白色 . 小黑点(线型)o 小圈号 x 叉号 + 十字号 * 星号 s 方形 d 菱形 v 三角形
三角形(向上) < 三角形(向左) > 三角形(向右) p 五角星 h 六角星 - 实连线 : 虚点连线 -. 点划连线 -- 双划连线 注意:先写subplot,再写plot,最后为title axis等 figure窗口不消失:grid on; 三:提取性质
1:提取出数列的长度:length(数列) 四:运算
数列之间的运算要加\
1:四则运算:+ ;- ;* ;/ ;以及数列之间的运算:.+ ;.- ;.* ;./; 注意当分母为一个数列时,只能用./不能用/ 取余运算:mod(a,b) Eg1
mod(13,5) ans =
3 Eg2
mod([1:5],3) ans =
1 2 0 1 2
取整: Fix(a)
2:三角函数:sin();cos();tan();cot(); 3:幕运算:^以及数列之间的运算:.^ 指数运算:exp() 应用:eg n=\ x=\
W=(pi/12.5)*k; //w=(2*pi/25)*k y=(exp(-j*pi/12.5)).^(n.*x); eg x=\ w=(pi/12.5);
y=\);//所得为一系列复数 注意有数列时则一定用.^不用^ eg:a=0:9; b=\ c=\
(自己记:符号两边不对称的,一旦有一个数列,则用.) 4:复数相关
abs()复数大小(幅频特性) angle()复角(相频特性) real()实部 imag()虚部 5:累加
一维数组的话直接sum(b)
要叠加行或列用sum(b,1)或sum(b,2) 二维数组要叠加所有元素用sum(b(:)) 五:语句
1: if——else语句 if 条件
运行语句1; 运行语句2; 运行语句n; else//可以省略 运行语句1; 运行语句2; 运行语句n;
end
也可以 if 。。 else if 。。 else 。。 end end
2: for循环语句
for 数列//多用0:n-1去执行n次;或应用length取长度 运行语句1; 运行语句2; 运行语句n; End
3:while 逻辑 语句1; 语句2; End
六:信号的产生
1:0矩阵的创立:zeros(m行,n列)//行是一的矩阵也就是一个序列 2:1矩阵的创立:ones(m行,n列)//行是一的矩阵也就是一个序列
应用:单位抽样序列:[1 zeros(1,n-1)] ====[1 0 0 0 0 0 0 0...](一共n个数字) 单位阶跃序列:ones(1,n)==[1 1 1 1 1 1 1 ??.] 七:编写*.m文件,自定义的函数 过程: 书写方法:
定义为*.m文件。
多要利用循环,分支语句。 运行方法:
进入含有自定义函数的*.m文件。
在命令行里键入:m文件的名字,回车。 Eg: clear all; close all; clc; cd lib
函数: 书写方法:
和过程相似,但要有:function 返回值=函数名(参数1,参数2,参数3。。。。) 主意:可以不定义返回值,参数n。m文件名=函数名 局部变量:
全局变量:利用global命令 Eg:
global num; num=1000;
运行方法:
与一般的函数一样,返回值,参数n在函数外部定义。 Eg: function re=\w=2*pi*f; t=0:n-1; re=sin(w*t); plot(re);
多值返回[ra,rb,rc,..]=???
或者在m编译器中debug>>run(调试程序)
matlab中inline函数
在matlab命令窗口、程序或函数中创建局部函数时,可用inline。优点是不必将其储存为一个单独文件。在运用中有几点限制:不能调用另一个inline函数,只能由一个matlab表达式组成,并且只能返回一个变量---显然不允许[u,v]这种形式。因而,任何要求逻辑运算或乘法运算以求得最终结果的场合,都不能应用inline。除了这些限制,在许多情况下使用该函数非常方便。
Inline函数的一般形式为:
FunctionName=inline(‘任何有效的matlab表达式’, ‘p1’,’p2’ ,?.) ,其中‘p1’,’p2’ ,?是出现在表达式中的所有变量的名字。 如:(求解F(x)=x^2*cos(a*x)-b ,a,b是标量;x是向量 )
在命令窗口输入:
Fofx=inline(‘x .^2*cos(a*x)-b’ , ‘x’,’a’,’b’);
g= Fofx([pi/3 pi/3.5],4,1)
系统输出为:g=-1.5483 -1.7259
*****************************************************
f函数如何理解
f函数的最通常的应用是以下形式:
f('functionname',parameter),举个简单的例子:
比如要计算sin(2),当然可以直接用命令y=sin(2);利用f,还可以这样来做: y=f('sin',2);另外这里的函数名字还可以是一个函数句柄,即h=@sin; y=f(h,2);或者直接写成y=f(@sin,2);
Matlab函数句柄, 匿名函数
变量不仅可以用来表示数值(如: 1, 0.2, -5), 用来表示字符串(如: 't', 'casino'), 也可以用来表示函数哦. 当然, 你也看到了前面我们提到的函数都是一个一个的文件, 直接塞到一个变量里面似乎太大, 不过我们可以'提纲挈领', 抓住函数的handle(句柄), 就可以.
将函数句柄赋值给变量要用到@符号, 语法: 变量名=@函数名, 此处地函数名可以是当前Matlab中可以使用的任意函数 例如: mysin=@sin, 此后mysin就和sin同样地使用, mysin(pi)和sin(pi)的含义相同.
匿名函数
这是函数句柄的一种高级用法, 这样产生的函数句柄变量不指向特定的函数, 而是一个函数表达式. 其语法:
变量名=@(输入参数列表)运算表达式
例如, 前面那个计算变量平方的函数可以简单地写为这个匿名函数:
mysqr1=@(x)x.*x
之后, 执行mysqr1(变量名), 即可计算该变量的平方, 注意, mysqr1属性是函数句柄变量, 而不是这个表达式; 还有要注意这个表达式不需要用单引号括起来.
inline 函数
inline函数不是函数句柄, 是另外一种类型, 它也可以用变量来表示函数, 用法也和一般函数, 函数句柄是一样的. 定义inline函数的语法:
变量名=inline('函数表达式', '变量名1','变量名2', ... ,'变量名n')
当然啦, 如果是常见变量名, 如x, y, 等, 后面那个变量名列表可以省略(不建议为了偷懒这么做, 因为容易引起混乱). inline语句得到的变量类型比较特别, 是'inline object'.
举例依旧是计算变量的平方, 用inline的方法可以这么做:
mysqr2=inline('x.*x','x');
定义完mysqr2后, 可以用: mysqr2(3), 计算3的平方.
当然, 函数句柄, 匿名函数, inline函数还有很多比较高深的内容, 这里就不提了, 今后如果我写那些学科的notes时遇上了再补充.