Coding for Low/High pass filters

Status
Not open for further replies.

luckyvictor

Member level 4
Joined
Dec 1, 2009
Messages
78
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,286
Activity points
1,903
Hi All

I am given two pieces of codes for Low pass filter and High pass filter, however I am not able to fully understand it and have the following question:

High Pass Filter:

Code:
if isempty(val)
    val = single(zeros(numel(input),1));
    out = single(zeros(numel(input),1));
end

for i = 1:numel(input)
    if reset
        out(i) = single(0.0);
        val(i) = single(0.0);     
    else 
        out(i) = input(i) - (samplePeriod / tc) * val(i);
        val(i) = val(i) + out(i);
    end
end

output = out(:);

How does it work please? My main question is, how come the val(i) is multiplied before it is updated? Because when I dry run it, every time the for loop is entered, val(i) is a fresh zero value because the i is updated.

Low Pass Filter:

Code:
if isempty(previousOutput)
    previousOutput = single(zeros(numel(input),1));
    out = single(zeros(numel(input),1));
end

for i = 1:numel(input)
    if reset
        out(i) = single(0.0);
    else       
        out(i) = ((input(i) - previousOutput(i)) * samplePeriod / tc) + previousOutput(i);
    end
end

output = out(:);    
previousOutput = out(:);

For this one, I just simply can not derive the above equation from y = 1/(1+Tc/Ts*z-1).

Many thanks
 
Last edited by a moderator:

Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…