-1

% 代码从 Lathi MS2P4 pg 232 的 Signals and Systems 略微修改。

如何使此代码成为函数?这样我就可以“调用”它来使用它。而不是一遍又一遍地粘贴整个事情。这只是两个函数的卷积动画。

figure(1) % Create figure window and make visible on screen 
x = @(t) cos(2*pi*3*t).* u(t);
h = @(t) u(t)-u(t-1);
dtau = 0.005;
tau = -1:dtau:4;
ti = 0;
tvec = -1:0.1:5;
y = NaN*zeros(1,length(tvec)); % Pre-allocate memory
for t = tvec,
    ti = ti + 1; % Time index
    xh = x(t-tau).*h(tau);
    lxh = length(xh);
    y(ti) = sum(xh.*dtau); % Trapezoidal approximation of integral
    subplot(2,1,1)
    plot(tau,h(tau),'k-',tau,x(t-tau),'k--',t,0,'ok')
    axis([tau(1) tau(end) -2.0 2.5])
    patch([tau(1:end-1);tau(1:end-1);tau(2:end);tau(2:end)],...
        [zeros(1,lxh-1);xh(1:end-1);xh(2:end);zeros(1,lxh-1)],...
        [0.8 0.8 0.8],'edgecolor','none')
    xlabel('\tau')
    legend('h(\tau)','x(t-\tau)','t','h(\tau)x(t-\tau)')
    c = get(gca,'children');
    set(gca,'children',[c(2);c(3);c(4);c(1)]);
    subplot(2,1,2)
    plot(tvec,y,'k',tvec(ti),y(ti),'ok')
    xlabel('t')
    ylabel('y(t) = \int h(\tau)x(t-\tau) d\tau')
    axis([tau(1) tau(end) -1.0 2.0])
    grid
    drawnow
%   pause
end
4

2 回答 2

2

您可以使用 Matlab 的,如此function所述

所以,你必须在顶部写上“function yourFunctionName”,然后你可以使用它的名字来调用它,yourFunctionName在这种情况下。

于 2013-02-10T19:03:12.103 回答
0

以下是适用于您的确切代码、简单的函数定义以及u(t)OP 中缺少的附加内容:

figure(1) % figure window outside function
u = @(t)heaviside(t); % define step function
x = @(t) cos(2*pi*3*t).* u(t);
h = @(t) u(t)-u(t-1);
dtau = 0.005;

convol_anime(x, h, dtau); % pass function handles + parameters 

您已经定义的地方:

function convol_anime(x, h, dtau)

tau = -1:dtau:4; ti = 0; tvec = -1:0.1:5;
y = nan*zeros(1,length(tvec)); 
...
于 2013-02-10T20:53:38.103 回答