MATLAB小知识

来源:互联网 发布:mac os x 10.11.1镜像 编辑:程序博客网 时间:2024/06/06 13:23

一、产生一维阶跃信号

%% 一维阶跃函数
function y=sstep(t,s,t0,a0,a1)
%此程序用于生成阶跃信号
%t总时长的一半
%s步长
%t0阶跃开始时刻
%a0阶跃前幅值
%a1阶跃后幅值

j=0;
for i=-t:s:t
    j=j+1;
    if i<t0
        y(j)=a0;
    else
        y(j)=a1;
    end
end

%% 门函数
function y=sstep2(t,s,t0,t1,a0,a1)
%此程序用于生成门信号
%t总时长的一半
% s步长
%t0阶跃开始时刻
%t1阶跃结束时刻
%a0阶跃前幅值
%a1阶跃后幅值


j=0;
for i=-t:s:t
    j=j+1;
    if i<t0&&i>t1
        y(j)=a1;
    else
        y(j)=a0;
    end
end
       
%% 一维高斯核函数
%t是尺度参数
%sigma是高斯核的方差
%sigma^2=t
function [g,g1,g2,g1_norm,g2_norm]=gauss(x,t,sigma)
g=(1/sqrt(2*pi*t))*exp(-x.^2./(2*sigma));%一维高斯函数
g1=diff(g);%对x求一阶导数
g2=diff(g,2);%对x求二阶导数


g1_norm=sigma*g1;%对一阶导数进行规范化
g2_norm=sigma^2*g2;%对二阶导数进行规范化
end

t=20;
s=0.01;
t0=0;%一维阶跃信号的跳跃点


t1=-t/2;%门信号的第一个跳跃点
t2=t/2;%门信号的第二个下降点


a0=-5;%最小值
a1=15;%最大值

y1=sstep(t,s,t0,a0,a1);%产生一维阶跃信号
y2=sstep2(t,s,t0,t1,a0,a1);%产生二维阶跃信号
x=-t:0.01:t;
figure(1);
subplot(2,2,1);
plot(x,y1);
title('阶跃信号');
subplot(2,2,2);
plot(x,y2);
title('门信号');


sigma=3;
[g,g1,g2,g1_norm,g2_norm]=gauss(x,sigma^2,sigma);
z10=conv(y1,g);%阶跃函数与原高斯函数卷积
subplot(2,2,3);
plot(z10);
title('阶跃+原');
z20=conv(y2,g);%门函数与原高斯函数卷积
subplot(2,2,4);
plot(z20);
title('门+原');


z11=conv(y1,g1);%阶跃函数与一阶导数高斯函数卷积
z21=conv(y2,g1);%门函数与一阶导数高斯函数卷积
z12=conv(y1,g2);%阶跃函数与二阶导数高斯函数卷积
z22=conv(y2,g2);%门函数与二阶导数高斯函数卷积


figure(2)
subplot(2,2,1);
plot(z11);
title('阶跃+一阶导')
subplot(2,2,2);
plot(z21);
title('门+一阶导');
subplot(2,2,3);
plot(z12);
title('阶跃+二阶导');
subplot(2,2,4);
plot(z22);
title('门+二阶导');




figure(3);
subplot(2,2,1);
plot(g);
title('高斯');
subplot(2,2,2);
plot(g1);
title('一阶高斯导');
subplot(2,2,3);
plot(g2);
title('二阶高斯导');
subplot(2,2,4);
plot(g1_norm);
title('一阶高斯导规范化');

0 0