连续信号的MATLAB表示
MATLAB提供了大量的生成基本信号的函数,例如指数信号、正余弦信号。
表示连续时间信号有两种方法,一是数值法,二是符号法。数值法是定义某一时间范围和取样时间间隔,然后调用该函数计算这些点的函数值,得到两组数值矢量,可用绘图语句画出其波形;符号法是利用MATLAB的符号运算功能,需定义符号变量和符号函数,运算结果是符号表达的解析式,也可用绘图语句画出其波形图。
数值法
例如指数信号,调用格式为 ft=A*exp(a*t) 程序如下:
A=1; a=-0.4;
t=0:0.01:10; %定义时间点
ft=A*exp(a*t); %计算这些点的函数值
plot(t,ft); %画图命令,用直线段连接函数值表示曲线
grid on; %在图上画方格
输出结果为:
符号法
例如正弦信号的符号算法,代码如下:
syms t %定义符号变量t
y=sin(pi/4*t) %符号函数表达式
ezplot(y,[-16,16]) %符号函数画图命令
%或者
f=sym('sin(pi/4*t)') %定义符号函数表达式
ezplot(f,[-16,16])
运行结果如下:
离散信号的MATLAB表示
表示离散时间信号一般使用stem函数,介绍如下。
stem(X,Y) 表示在 X 指定的值的位置绘制数据序列 Y。X 和 Y 输入必须是大小相同的向量或矩阵。
注:1.X 可以是行或列向量,Y 必须是包含 length(X) 行的矩阵。
2.如果 X 和 Y 都是向量,则 stem 将根据 X 中的对应项绘制 Y 中的各项。
3.如果 X 是向量,Y 是矩阵,则 stem 将根据 X 指定的值集绘制 Y 的每列,这样 Y 的一行中的所有元素都是根据相同的值而绘制。
4.如果 X 和 Y 都是矩阵,则 stem 将根据 X 的对应列绘制 Y 的列。
stem(___,'filled') 填充圆。可以将此选项与前面语法中的任何输入参数组合一起使用。
例如单位脉冲序列的表示,代码如下:
t=-1:5;
X=(t==0);% 判断括号里面的表达式是否成立,如果成立则函数有效,且值为1,有数值,否侧函数无效,没有数值为0,类比单位阶跃信号的使用ft(t>=0)
stem(t,X,); %使用stem函数画图
grid on; %画出网格线
axis([-1,5,-0.2,1.2])%定义画图范围
输入结果如下:
再例复指数序列的,代码如下:
k=-10:30;
a=-1/3;b=pi/4;
X=0.*(k<0)+exp((a+b*j)*k).*(k>=0);%分段表示,结合前面的t(>=0)的意义理解,另外这里b*j即为题目给的w
%subplot(m,n,i)是建立m行n列的画图窗口,并指定画图位置i
subplot(2,2,1),stem(k,real(X),'fill'),title('实部');
subplot(2,2,2),stem(k,imag(X),'fill'),title('虚部');
subplot(2,2,3),stem(k,abs(X),'fill'),title('模');
subplot(2,2,4),stem(k,angle(X),'fill'),title('相角');
%real是取实部,imag是取虚部,abs是取模,angle是取角
grid on;
axis([-10,30,-3,3])
运行结果如下: