fsamp = 2;
deltaf = fsamp/nfft; % FFT resolution
Nfreqtimestwo = 128; % Used below
Nsines = Nfreqtimestwo/2 - 1; % Number of sine waves
fmult = [1:Nsines]; % multiplicative factor
freq_fund = fsamp/Nfreqtimestwo;
freq_sines = freq_fund.*fmult;
omega = 2*pi*freq_sines;
r = int16(0);
for(ii=1:Nsines)
r = r + cos((omega(ii)/fsamp)*(0:messageLen-1));
end
Voici le code que j'utilise actuellement pour créer mon signal d'entrée. Cependant, le résultat final de r
est un tableau de 32 768 doubles. Maintenant, je voudrais faire la meilleure approximation de cela en utilisant int16
. Toutefois, je tiens à souligner que l'amplitude n'a pas vraiment d'importance. Par exemple, je pense que ma meilleure approche jusqu'à présent a été :
fsamp = 2;
deltaf = fsamp/nfft; % FFT resolution
Nfreqtimestwo = 128; % Used below
Nsines = Nfreqtimestwo/2 - 1; % Number of sine waves
fmult = [1:Nsines]; % multiplicative factor
freq_fund = fsamp/Nfreqtimestwo;
freq_sines = freq_fund.*fmult;
omega = 2*pi*freq_sines;
r = int16(0);
for(ii=1:Nsines)
r = r + int16(8192*cos((omega(ii)/fsamp)*(0:messageLen-1)));
end
Y a-t-il de meilleures façons d'aborder cette question ?
EDIT La raison pour laquelle je veux convertir les doubles en ints est que cette liste est utilisée dans un système embarqué et qu'elle sera éventuellement transmise à un DAC 16 bits... aucun double n'est autorisé.