Borrar filtros
Borrar filtros

How to realize linear function (filter?) with saturation?

2 visualizaciones (últimos 30 días)
Alexander
Alexander el 2 de Mayo de 2021
Comentada: Alexander el 2 de Mayo de 2021
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:
How to make transform function (maybe filter)?

Respuesta aceptada

Jan
Jan el 2 de Mayo de 2021
Editada: Jan el 2 de Mayo de 2021
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
  1 comentario
Alexander
Alexander el 2 de Mayo de 2021
Thank you very much, Jan!
(I looked through function
ischange(A,'linear','Threshold',THR);
how it plots the results.)

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Frequency Transformations en Help Center y File Exchange.

Productos


Versión

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by