as the definition of normalized frequency is the frequency divided by the sample frequency, I'm confused about my signal so as an example a signal sampled at ($f_s=500 000$) Hz when applying a FFT, an impulse at frequency of $87$ Hz occurred(true value confirmed) while it occurred at $0.117$ Hz in normalized frequency so we know that 1 for normalized frequency is sampling frequency($f_s$) but $0.117$ Hz normalized frequency how it calculated according to $f_s$ to get $87$ Hz while it's not $87/(f_s/2)$!!

I will be grateful for your help

  • $\begingroup$ um, normalized frequency doesn't have a unit (Hz), because that unit was cancelled when you divided. it's simply a number. The rest of the question is a bit hard to understand. What is your question, precisely? Can you put a question sentence in there, i.e. a sentence that ends with a ? and asks something specific? $\endgroup$ – Marcus Müller Nov 7 '20 at 11:09
  • $\begingroup$ thankyou for your response . a signal with sampling frequency 500000 Hz, an impulse occurred at frequency of 0.117 (normalized frequency), so how do we convert this value to a frequency! $\endgroup$ – KARIMA Nov 7 '20 at 12:17

You have to carefully read the documentation of the functions that use/generate normalized frequency in some cases they use $fs$ and in others they use $f_s/2$.

The Mathworks docuementation for firpmord:


[n,fo,ao,w] = firpmord(f,a,dev) returns the approximate order n, normalized frequency band edges fo, frequency band amplitudes ao, and weights w that meet input specifications f, a, and dev.


[] = firpmord(,fs) specifies a sampling frequency fs. fs defaults to 2 Hz, implying a Nyquist frequency of 1 Hz. You can specify band edges scaled to a particular application's sample rate. You can use this with any of the previous input syntaxes."

In this case the maximum frequency that can be given in the f vector is 1.0 which corresponds to $f_s$. This is likely because the Matlab code is designing real (not complex) filters and you can only specify the response from 0 -> $f_s/2$ since the other half will be determined by conjugate symmetry.

It can be confusing - looking at Matlab's Remez and Remezord functions, they tend to say they normalize by the Nyquist frequency (they mean $f_s/2$) but they don't explicitly tell you that. Looking at the graphs of the filter responses in their examples in the documentation does make it clear - they show only half the frequency range and the maximum frequency is 1.0 (meaning it has been normalized by $f_s/2$.

In other code, e.g. ones that deal with complex filters, you may see the normalization use $f_s$, because you no longer have the conjugate symmetry you can specify the response over the whole frequency range (0-> $f_s$).

So it really depends. There are really two conventions for normalized frequency and you have to read the documentation or ask what whether they've normalized by $f_s$ or $f_s/2$.

  • $\begingroup$ thank you for your response realy it's clear; thank you $\endgroup$ – KARIMA Nov 7 '20 at 16:05
  • $\begingroup$ @KARIMA if this answer was helpful, the best thanks you can give is to upvote it and select it as the right answer $\endgroup$ – Dan Boschen Nov 7 '20 at 23:52

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