Skip to content

Commit

Permalink
Remove use of BiquadFilter
Browse files Browse the repository at this point in the history
dsp.BiquadFilter will be removed in R2024b. This change switches code to
use dsp.SOSFilter on newer MATLAB releases.

Signed-off-by: Travis F. Collins <[email protected]>
  • Loading branch information
tfcollins committed Aug 28, 2024
1 parent 22f9b3a commit 2adbead
Showing 1 changed file with 27 additions and 4 deletions.
31 changes: 27 additions & 4 deletions internal_design_filter.m
Original file line number Diff line number Diff line change
Expand Up @@ -83,10 +83,23 @@
% Digital representation of the analog filters (It is an approximation for group delay calculation only)
[z1,p1,k1] = butter(3,coerce_cutoff(input.wnom/(input.converter_rate/2)),'low');
[sos1,g1] = zp2sos(z1,p1,k1);
Hd1=dsp.BiquadFilter('SOSMatrix',sos1,'ScaleValues',g1);
% Convert Release to number ex: 2014a -> 2014.1, 2014b -> 2014.2
rel = version('-release');
relNum = str2double(rel(1:end-1)) + (rel(end) - 'a' + 1) * 0.1;
if relNum >= 2024.1
[num,den] = sos2ctf(sos1);
Hd1 = dsp.SOSFilter(num,den,ScaleValues=g1,Structure="Direct form I");
else
Hd1=dsp.BiquadFilter('SOSMatrix',sos1,'ScaleValues',g1);
end
[z2,p2,k2] = butter(1,coerce_cutoff(wTIA/(input.converter_rate/2)),'low');
[sos2,g2] = zp2sos(z2,p2,k2);
Hd2=dsp.BiquadFilter('SOSMatrix',sos2,'ScaleValues',g2);
if relNum >= 2024.2
[num,den] = sos2ctf(sos2);
Hd2 = dsp.SOSFilter(num,den,ScaleValues=g2,Structure="Direct form I");
else
Hd2=dsp.BiquadFilter('SOSMatrix',sos2,'ScaleValues',g2);
end
Hanalog = cascade(Hd2,Hd1);

% Define the Pluto DEC8 filter
Expand All @@ -113,10 +126,20 @@
% Digital representation of the analog filters (It is an approximation for group delay calculation only)
[z1,p1,k1] = butter(3,coerce_cutoff(input.wnom/(input.converter_rate/2)),'low');
[sos1,g1] = zp2sos(z1,p1,k1);
Hd1=dsp.BiquadFilter('SOSMatrix',sos1,'ScaleValues',g1);
if relNum >= 2024.2
[num,den] = sos2ctf(sos1);
Hd1 = dsp.SOSFilter(num,den,ScaleValues=g1,Structure="Direct form I");
else
Hd1=dsp.BiquadFilter('SOSMatrix',sos1,'ScaleValues',g1);
end
[z2,p2,k2] = butter(1,coerce_cutoff(wreal/(input.converter_rate/2)),'low');
[sos2,g2] = zp2sos(z2,p2,k2);
Hd2=dsp.BiquadFilter('SOSMatrix',sos2,'ScaleValues',g2);
if relNum >= 2024.2
[num,den] = sos2ctf(sos2);
Hd2 = dsp.SOSFilter(num,den,ScaleValues=g2,Structure="Direct form I");
else
Hd2=dsp.BiquadFilter('SOSMatrix',sos2,'ScaleValues',g2);
end
Hanalog = cascade(Hd1,Hd2);

% Define the Pluto INT8 filter
Expand Down

0 comments on commit 2adbead

Please sign in to comment.