New answers tagged

1

There is the solution as announced in the question text: The transfer function $$ H(z) = \frac{b2_{1}z^{-2} + b1_{1}z^{-1} + b0_{1}}{a2_{1}z^{-2} + a1_{1}z^{-1} + a0_{1}}.\frac{b2_{2}z^{-2} + b1_{2}z^{-1} + b0_{2}}{a2_{2}z^{-2} + a1_{2}z^{-1} + a0_{2}} $$ was converted to the following parallel form composed of the biquads $bq1$ and $bq2$ $$ H(z) = r0 + \...


2

You need to do partial fraction expansion. Most of the time, the result will be 3 parallel sections with the same poles as the original filter but only with a real zero in each parallel section. The first section is just a single real scale factor. $$H(z) = r0_0 + \frac{r0_1 + r1_1 \cdot z^{-1}}{a0_1 + a1_1 \cdot z^{-1} + a2_1 \cdot z^{-2}} + \frac{r0_2 + ...


3

A discrete-time first-order high pass filter with unity gain at Nyquist and a zero at DC is described by the following difference equation: $$y[n]=\frac{1+\alpha}{2}\big(x[n]-x[n-1]\big)+\alpha y[n-1],\qquad -1<\alpha<1\tag{1}$$ Its transfer function is given by $$H(z)=\frac{1+\alpha}{2}\frac{1-z^{-1}}{1-\alpha z^{-1}}\tag{2}$$ Evaluating the squared ...


2

Here are couple examples: % R is the resistance value (in ohms) % C is the capacitance value (in farrads) % fs is the digital sample rate (in Hz) % Constants RC = R * C; T = 1 / fs; % Analog Cutoff Fc w = 1 / (RC); % Prewarped coefficient for Bilinear transform A = 1 / (tan((w*T) / 2)); % using Bilinear transform of % % 1 ( 1 - z^-1 ...


1

It's important to specify at which frequency you want unity gain. But assuming you mean DC ($\omega=0$), because that filter has a low pass characteristic, the DC gain of an IIR filter is given by $$G_{DC}=\frac{\sum_kb[k]}{\sum_ka[k]}\tag{1}$$ It's also common to normalize the denominator coefficients such that $a[0]=1$. In your example that would give a = [...


0

b = [0 1.209e09] a= [9.2175 -2.6952 1.0000] % original ----------------------- sys = tf(b,a,0.1,'Variable','z^-1'); % fixes -------------------------- sys=sys/dcgain(sys); % scale coefficients by b(2) sys1=tf(b/b(2),a/b(2),0.1,'Variable','z^-1') sys1=sys1/dcgain(sys1); bode(sys,'-', sys1,'--') Which results: Transfer function 'sys' from input 'u1' ...


2

I've used this method in Octave: function [c] = Hz_at_3dB(b, a, fs, samples) [H,W] = freqz(b,a,samples); magresp = 20*log10(abs(H)); maxresp = max(magresp); [I,~] = find(magresp < maxresp-3.0103,3,'first'); c=(fs/2 * W(I(1)))/pi; EDIT: SECTION 8.4: STANDARD RESPONSES - https://www.analog.com/media/en/training-seminars/design-...


5

In general there is no straightforward analytical solution. As you know, you need to solve $$\left|H(e^{j\omega_c})\right|=\frac{1}{\sqrt{2}}\tag{1}$$ for $\omega_c$, where it is assumed that the maximum filter gain equals $1$. For Butterworth filters, the specified cut-off frequency always equals the $3\textrm{ dB}$ frequency. This is not the case for other ...


4

First of all you see that the phase is a piecewise linear function, so it's a linear phase FIR filter. There's a phase jump at half the Nyquist frequency, which shows that the filter has a zero at that frequency. Note that the phase jumps by $\pi$ corresponding to sign inversion. You can also see what type of linear phase FIR filter it is. Since the phase ...


0

For a filter with an input that you know will have a dc component, initialize the filter states (delay line) with the first sample. Matlab have a dedicated function for this, filter_ic(). Another option, as suggested by hotpaw2 1. Subtract the assumed DC 2. Filter 3. Add the DC back in


0

If the offset is known, or can be determined before applying the filter, you can subtract the offset from the signal before applying the filter, then add the offset back after filtering. If you don't know the offset, neither will the filter when it first starts.


1

if the implementation preserves bits until quantization must occur at the final output, the Direct Form is far simpler than the Transposed Form. using the transposed form requires that your states have double-wide word widths unless you quantize each of those states back to single width. but that is more quantization error than if you just add up a bunch ...


1

I don't see how memory or computational burden can possibly be reduced between the two implementations (note this is not implying simplicity, just number of computations required, please read on...) Usually the decision to use transposed-form is for high speed FPGA implementations with a large number of taps as you can eliminate a long adder tree which would ...


1

The ratio $$\frac{\textrm{Im}\{H(u,v)I(u,v)\}}{\textrm{Re}\{H(u,v)R(u,v)\}}\tag{1}$$ is only independent of $H(u,v)$ if $H(u,v)$ is real-valued, which is exactly the condition for a zero-phase filter. The phase can only be zero if the frequency response is real-valued, as you've already noted. For real-valued $H(u,v)$ we have $$\frac{\textrm{Im}\{H(u,v)I(...


2

Filters that affect the real and imaginary parts equally, and thus have no effect on the phase, are appropriately called zero-phase-shift filters." The filter itself is zero-phase, but the input (and therefore the output) waveform can be complex. In this case the real and imaginary components of the input would be effected equally since the filter is ...


3

A bump like this one is likely to be wide-band, especially with the sharp onset. Plus, the line may be hard to deal with in the Fourier domain. Hence, the combination is complicated to remove with a classical linear filter. The problem is very akin to baseline, background or trend removal, answered elsewhere here. Several options are possible, for ...


Top 50 recent answers are included