楼主的方法不错,怎么会控制不好呢。我帮你写了两个函数。你看看是不是和你的心意。
function y = ramp_input(t, A, Tr, Td)
% Version: 06.03.2007
% Author: Wang,Lei
% This function can be used to generate a ramp signal
% Input
% - t time
% - A amplitude
% - Tr rise time
% - Td delay
% Output
% - y y = A/Tr * ( t - Td );
% init output variable y
y = zeros(size(t));
% generate y
temp_index = find(t>Td); % find 0
y(temp_index) = A/Tr * ( t(temp_index) - Td ); % rise
temp_index = find(y>A); % find the saturated region
y(temp_index) = A; % set the end value
function y = pulse_input( t, A, Tr, Tf, Tdr, Tdf )
% Version: 06.03.2007
% Author: Wang,Lei
% This function can be used to generate a ramp signal
% Input
% - t time
% - A amplitude
% - Tr rise time
% - Tf fall time
% - Tdr delay at rising edge
% - Tdf delay at falling edge
% Output
% - y y = ramp_input(t, A, Tr, Tdr) - ramp_input(t, A, Td, Tdf);
y = ramp_input(t, A, Tr, Tdr) - ramp_input(t, A, Tf, Tdf); |