Рейтинг:  0 / 5

Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
 

Доброе время суток, друзья, сегодня нам предстоит построить амплитудный спектр некоего вектора отсчётов АЦП.Итак, сразу к делу!

Файл back_right.sci, лежит в той же папке, где и наш скрипт, текст которого приведён ниже (spectral.sci):

Fsamp - частота отсчётов АЦП (для зануд - единиц на период ;)); 

MaxSpecFreq - максимальная частота, которую мы хотим отобразить в спектре, при большом количестве отсчётов - не переборщите :)) У нас, например, более 600000 и весь спектр построить - ну очень долго!

Сам вектор в файле back_right.sci задан в стиле a1 = [ 214; 213; 242;...;535;]; - количество отсчётов далее учитывается с помощью SizeArray = size(a1);
SizeArray = SizeArray(1);
Амплитуду нормируем просто по количеству отсчётов - в едицицах измерения АЦП (умножаем на 2/N, т.к. спектр зеркальный, (http://wow-only.ru/2012-03-07-11-50-35/96-2013-05-19-17-39-51/318--scilab.html)где N- количество отсчётов).
Fsamp = 26000;
MaxSpecFreq = 1000;
exec('back_right.sci',-1);
SizeArray = size(a1);
SizeArray = SizeArray(1);
back_right = a1 - mean(a1);
spec_back_right = abs(fft(back_right));
MaxPlotPoint =round(MaxSpecFreq*SizeArray/Fsamp);
for i = 1:1:MaxPlotPoint
x(i) = (Fsamp/SizeArray)*(i-1);
end
plot(x(1:MaxPlotPoint),2*spec_back_right(1:MaxPlotPoint)/(SizeArray));
xgrid(100);