# Fourier transform of a normalized vector

I was expecting that when I take (for example, in MATLAB), s2 = fft(s1/norm(s1)), the norm of s2 is not equal one, norm(s2) $\neq$ 1.

I cannot figure out why this is! Can anyone shed light on this?

There are different conventions in scaling of the FFT, in MATLAB you need to scale it by $\sqrt{N}$, where $N$ is your number of samples. Saying it in matlabish:

clc, clear all
%% Create some sinusoidal signal with noise
t = linspace(0, 6*pi, 1000)+randn(1,1000);
s1 = sin(2*pi*t);
% Calculate the norm of s1
s1_norm = norm(s1);
display(sprintf('L2 norm of s1: %.2f', s1_norm))
%% Create signal s2 as the FFT of normalised s1
% Scale FFT by sqrt(N) - this is convention used in MATLAB
s2 = fft(s1)/sqrt(length(t));
% Calculate the norm of s2
s2_norm = norm(s2);
display(sprintf('L2 norm of s2: %.2f', s2_norm))


Depends on the scaling of the FFT pair for the conventional case (no scaling for the forward FFT and 1/N for the inverse FFT), the frequency domain norm will be higher by sqrt(N) where N is the FFT length.

The alternative would to to use 1/sqrt(N) for both forward and inverse FFT in which case the norm would be preserved. Both versions can be found in practice.