0
$\begingroup$

I am developing a frequency response simulator for linear circuits which should be able to plot graphs of Voltage x Frequency with the latest varying linearly, in octaves or in decades. The only parameters I give the simulator are which kind of scale should be used, the number of points and the starting and ending frequencies.

The linear case is pretty straightforward. I simply subtract the lower frequency from the upper frequency and divide by the number of points so that I have the increment that should be added to the frequency at each iteration.

However, I cannot seem to find a way to do the same for the other two scales. How should I proceed in order to determine which frequency values should be used at each case?

$\endgroup$
0
$\begingroup$

Suppose your starting frequency is $x$, ending frequency is $y$, and you want to plot $z$ steps.

You got the first case right (although the term 'arithmetic' is better than linear). The frequencies $f$ are $f_k = x + rk$, with $r = \frac {y - x}{z}$ and $k = 0,1,...z-1$.

Octaves and decades are what are called a geometric sequence. You want to plot your values so that the logarithm of the frequencies occur at equal differences. So if 3 frequencies are plotted in a row, $f_0$ then $f_1$ then $f_2$, you want to require $\log f_1 - \log f_0 = \log f_2 - \log f_1$. Or to put it equivalently, you want $\frac{f_{k+1} }{f_{k}}$ to be a constant.

This is done by making $f_k = x \cdot r^k$ with $r = \sqrt[z]{\frac{y}{x}}$.

Derivation:

$$\frac {f_1} {f_0} = r$$ $$\frac {f_2} {f_0} = r^2$$ $$\frac {f_3} {f_0} = r^3$$ $$\vdots$$ $$\frac{f_{z-1}} {f_0} = r^z$$

Since the starting and ending frequencies are $x$ and $y$,

$$\frac{y} {x} = r^z$$ $$\sqrt[z]{\frac yx} = r$$

For octaves, $z = 8$ I'm guessing (this is different than how octave is used in occidental music where $z=12$). Decades suggest $z = 10$.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.