matlab里如何表示冲激信号

如题所述

冲激函数即是delta函数,属于广义函数,在matlab中,如果是为了绘制出冲激函数的效果图,可以如下编写m文件:

function x=impseq(n0,n1,n2)

n = n1:0.01:n2;

x = [(n-n0)==0]; %其中n0为delta=1处横坐标。

end

扩展资料:

Matlab常用函数和命令

atan( )  反正切(返回弧度)

angle( ) 返回复数的相位角

atand( ) 反正切(返回度数)

mod(x,y) 返回x/y的余数

floor(x):下取整,即舍去正小数至相邻整数

ceil(x):上取整,即加入正小数至相邻整数

eye()    创建对角元素为1,其他元素为0的矩阵

参考资料来源:百度百科-MATLAB

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-13
== TA α n=0:50; %定义序列的长度是 50 A=1; %设置信号有关的参数 a=0.4; T=1; %采样率 w0=2.0734; x=A*exp(-a*n*T).*sin(w0*n*T); %pi 是 MATLAB 定义的π,信号乘可采用“ .*” close all %清除已经绘制的 x(n)图形 subplot(3,1,1);stem(x); %绘制 x(n)的图形 title(‘理想采样信号序列 ’); k=-25:25; W=(pi/12.5)*k; X=x*(exp(-j*pi/12.5)).^(n’*k); magX=abs(X); %绘制 x(n)的幅度谱 subplot(3,1,2);stem(magX);title(‘理想采样信号序列的幅度谱 ’); angX=angle(X); %绘制 x(n)的相位谱 subplot(3,1,3);stem(angX) ; title (‘理想采样信号序列的相位谱 ’) 2、单位脉冲序列 在 MatLab 中,这一函数可以用 zeros 函数实现: n=1:50; %定义序列的长度是 50 x=zeros(1,50); %注意: MATLAB 中数组下标从 1 开始 x(1)=1; close all; subplot(3,1,1);stem(x);title(‘单位冲击信号序列 ’); k=-25:25; X=x*(exp(-j*pi/12.5)).^(n’*k); magX=abs(X); %绘制 x(n)的幅度谱 subplot(3,1,2);stem(magX);title(‘单位冲击信号的幅度谱 ’); angX=angle(X); %绘制 x(n)的相位谱 subplot(3,1,3);stem(angX) ; title (‘单位冲击信号的相位谱 ’) 3、矩形序列 n=1:50 x=sign(sign(10-n)+1); close all; subplot(3,1,1);stem(x);title(‘单位冲击信号序列 ’); k=-25:25; X=x*(exp(-j*pi/25)).^(n’*k); magX=abs(X); %绘制 x(n)的幅度谱 subplot(3,1,2);stem(magX);title(‘单位冲击信号的幅度谱 ’); angX=angle(X); %绘制 x(n)的相位谱 subplot(3,1,3);stem(angX) ; title (‘单位冲击信号的相位谱 ’) 4、特定冲击串: )3()2(5.2)1(5.2)()( ?+?+?+= nnnnnx δδδδ n=1:50; %定义序列的长度是 50 x=zeros(1,50); %注意: MATLAB 中数组下标从 1 开始 x(1)=1;x(2)=2.5;x(3)=2.5;x(4)=1; close all; subplot(3,1,1);stem(x);title(‘单位冲击信号序列 ’); k=-25:25; X=x*(exp(-j*pi/12.5)).^(n’*k); magX=abs(X); %绘制 x(n)的幅度谱 subplot(3,1,2);stem(magX);title(‘单位冲击信号的幅度谱 ’); angX=angle(X); %绘制 x(n)的相位谱 subplot(3,1,3);stem(angX) ; title (‘单位冲击信号的相位谱 ’) 5、卷积计算: ∑ +∞ ?∞= ?=?= m mnhmxnhnxny )()()()()( 在 MATLAB 中。提供了卷积函数 conv,即 y=conv(x,h),调用十分方便。例如: 系统: )3()2(5.2)1(5.2)()( ?+?+?+= nnnnnh b δδδδ 信号: 500),sin()( 0 <≤?= ? nnTAetx nT a α n=1:50; %定义序列的长度是 50 hb=zeros(1,50); %注意: MATLAB 中数组下标从 1 开始 hb(1)=1;hb(2)=2.5;hb(3)=2.5;hb(4)=1; close all; subplot(3,1,1);stem(hb);title(‘系统 hb[n]’); m=1:50; %定义序列的长度是 50 A=444.128; %设置信号有关的参数 a=50*sqrt(2.0)*pi; T=0.001; %采样率 w0=50*sqrt(2.0)*pi; x=A*exp(-a*m*T).*sin(w0*m*T); %pi 是 MATLAB 定义的π,信号乘可采用“ .*” subplot(3,1,2);stem(x);title(‘输入信号 x[n]’); y=conv(x,hb); subplot(3,1,3);stem(y);title(‘输出信号 y[n]’); 6、卷积定律验证 k=-25:25; X=x*(exp(-j*pi/12.5)).^(n’*k); magX=abs(X); %绘制 x(n)的幅度谱 subplot(3,2,1);stem(magX);title(‘输入信号的幅度谱 ’); angX=angle(X); %绘制 x(n)的相位谱 subplot(3,2,2);stem(angX) ; title (‘输入信号的相位谱 ’) Hb=hb*(exp(-j*pi/12.5)).^(n’*k); magHb=abs(Hb); %绘制 hb(n)的幅度谱 subplot(3,2,3);stem(magHb);title(‘系统响应的幅度谱 ’); angHb=angle(Hb); %绘制 hb(n)的相位谱 subplot(3,2,4);stem(angHb) ; title (‘系统响应的相位谱 ’) n=1:99; k=1:99; Y=y*(exp(-j*pi/12.5)).^(n’*k); magY=abs(Y); %绘制 y(n)的幅度谱 subplot(3,2,5);stem(magY);title(‘输出信号的幅度谱 ’); angY=angle(Y); %绘制 y(n)的相位谱 subplot(3,2,6);stem(angY) ; title (‘输出信号的相位谱 ’) %以下将验证的结果显示 XHb=X.*Hb; Subplot(2,1,1);stem(abs(XHb));title(‘x(n)的幅度谱与 hb(n)幅度谱相乘 ’); Subplot(2,1,2);stem(abs(Y);title(‘y(n)的幅度谱 ’); axis([0,60,0,8000])本回答被提问者采纳
第2个回答  推荐于2017-10-04
冲激函数即是delta函数,属于广义函数。直观的理解便是在x0点取值为1,在区间其余处取值为0。其可以直接生成,也可以视为阶梯函数的导数来生成。
在matlab中,如果是为了绘制出冲激函数的效果图,可以如下编写m文件:
function x=impseq(n0,n1,n2)
n = n1:0.01:n2;
x = [(n-n0)==0]; %其中n0为delta=1处横坐标。
end
其中n0是取值为1的点,n1,n2是区间左右端点,你可以通过调节0.01使得函数不为0区域变窄。
除此之外,如果你仅仅要使用冲激函数,即按照其广义的定义,我建议还是解析进行比较好。毕竟广义函数不是一般意义上的函数,其存在性依赖于函数的弱收敛。而matlab只是一个数值模拟程序,这方面不是很适合。
相似回答