How to realize linear function (filter?) with saturation?
조회 수: 4 (최근 30일)
이전 댓글 표시
Initial signal equals ones, then minus ones (it can switch many times):
u = [ones(15,1);-ones(5,1)];
If u==1 then output should be .1; .2... up to 1 and stay 1 (saturation). After u==-1 the output should be -.1; -.2... up to -1.
I tried filter:
Nb = 10;
b = ones(1,Nb)/Nb;
y = filter(b,1,u);
stem([u, y])
It's wrong:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/604245/image.png)
How to make transform function (maybe filter)?
댓글 수: 0
채택된 답변
Jan
2021년 5월 2일
편집: Jan
2021년 5월 2일
u = [ones(15,1);-ones(5,1)];
Ramp = 0.1:0.1:1; % Set of values
v = SaturatedRamp(u, Ramp);
function v = SaturatedRamp(u, R)
% Running index, starting from 1 at each change:
k = [false; diff(u(:)) ~= 0];
s = [1; find(k)];
I = ones(numel(u), 1);
I(k) = 1 - diff(s);
I = cumsum(I);
R = R(:);
I = min(numel(R), I); % Limit indices to length of ramp
v = R(I) .* u(:); % Copy sign of original data
end
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Multirate Signal Processing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!