1
0

2 Commitit 0cda96bfaf ... 7bbbf40872

Tekijä SHA1 Viesti Päivämäärä
  ChStepan 7bbbf40872 Merge branch 'NewCicFilterTest' of http://gogs.druzhinin.pro/ChStepan/S5244_FFT into NewCicFilterTest 4 kuukautta sitten
  ChStepan 24e1517057 Тестовые изменения 4 kuukautta sitten
2 muutettua tiedostoa jossa 709 lisäystä ja 0 poistoa
  1. 197 0
      src/src/Sim/FFTTest.asv
  2. 512 0
      src/src/Sim/ImpResp2.txt

+ 197 - 0
src/src/Sim/FFTTest.asv

@@ -0,0 +1,197 @@
+FormatSpec = '%d';
+
+N = 4;
+R = 2;
+B = 14;
+M = 1;
+
+PointsNum = 100;
+
+Bmax = ceil(log2(((R*M)^N)/R)+B);
+MaxWidthR2 = ceil(log2(((2*M)^N)/2)+B);
+MaxWidthR4 = ceil(log2(((4*M)^N)/4)+B);
+
+K = N*20*log10(M);
+BitGrowth = ceil(2^(K/20));
+Bnew = B+BitGrowth;
+
+x = 1:1:PointsNum;
+xDecim = 1:1:PointsNum/R;
+
+Fc = 3;
+Fs = 50;
+
+DeltaPulse = [1, zeros(1, PointsNum*R-1)];
+DeltaPulseTransposed = transpose(DeltaPulse);
+
+IdealCicDecim = dsp.CICDecimator(R,M,N);
+ImpResp = IdealCicDecim(DeltaPulseTransposed);
+
+FftPNum = 50000;
+Step = 1 / FftPNum;
+f = linspace(1e-10, 1 - Step, FftPNum);
+H = ones(1,50000);
+
+for i = 1:50000
+    H(i) = abs(sin(pi * M * R * f(i)) / sin(pi * f(i)))^N;
+end
+
+Hdb = 20 * log10(abs(H));
+Hdb = Hdb - max(Hdb);
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ReadInDataId = fopen('C:/S5243_FFT_REPO/src/src/Sim/InputSignal.txt','r');
+InDataSignal = fscanf(ReadInDataId,FormatSpec);
+fclose(ReadInDataId);
+
+ReadFilteredDataId = fopen('C:/S5243_FFT_REPO/src/src/Sim/FilteredData.txt','r');
+FilteredData = fscanf(ReadFilteredDataId,FormatSpec);
+fclose(ReadFilteredDataId);
+
+ReadImpulseRestId = fopen('C:\S5243_FFT_REPO\src\src\Sim\ImpResp.txt','r');
+ImpulseResp = fscanf(ReadImpulseRestId,FormatSpec);
+fclose(ReadImpulseRestId);
+
+ReadFilterCoefsId = fopen('C:\S5243_FFT_REPO\src\src\Sim\CorrFilterCoefs.txt','r');
+FilterCoefs = fscanf(ReadFilterCoefsId,FormatSpec);
+fclose(ReadFilterCoefsId);
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+FreqBandOrig = Fs*(1:(PointsNum))/PointsNum;
+FreqbandDecim = (Fs/2*R)*(1:(PointsNum))/PointsNum;
+
+InDataFft = abs(fft(InDataSignal+randn(size(InDataSignal)))/PointsNum);
+InDataFftDb = 20*log10(InDataFft);
+
+IdealCicFFt = abs(fft(ImpResp));
+IdealCicFFtDb = 20*log10(IdealCicFFt);
+IdealCicFFtDb = IdealCicFFtDb-max(IdealCicFFtDb);
+
+CalcCicFft = abs(fft(ImpResp));
+CalcCicFftDb = 20*log10(IdealCicFFt);
+CalcCicFftDb = IdealCicFFtDb-max(IdealCicFFtDb);
+
+FilteredDataFft = abs(fft(FilteredData+randn(size(FilteredData)))/PointsNum);
+% FilteredDataFft = abs(fft(FilteredData)/PointsNum);
+FilteredDataFftDb = 20*log10(FilteredDataFft);
+FilteredDataFftDb = FilteredDataFftDb-max(FilteredDataFftDb);
+
+ImpuseRespFft = abs(fft(ImpulseResp));
+ImpuseRespFftDb = 20*log10(ImpuseRespFft);
+ImpuseRespFftDb = ImpuseRespFftDb-max(ImpuseRespFftDb);
+
+Fband = 0:(Fs/R)/(PointsNum/R):(Fs/R)-1/(PointsNum/R);
+FbandOrig = 0:Fs/PointsNum:Fs-1/PointsNum;
+
+%InDataFftDb = InDataFftDb(1:length(Fband));
+%FilteredDataFftDb = FilteredDataFftDb(1:length(Fband));
+%ImpuseRespFftDb = ImpuseRespFftDb(1:length(Fband));
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% figure('name','In Data Time/Freq', 'Numbertitle', 'off')
+% subplot(2,1,1)
+% plot(InDataSignal)
+% grid on;
+% grid minor;
+% title('In Signal')
+% xlabel('Time')
+% ylabel('Amp')
+% 
+% subplot(2,1,2)
+% plot(FilteredData)
+% grid on;
+% grid minor;
+% title('Filtered Data')
+% xlabel('Time')
+% ylabel('Amp')
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% figure('name','Frequency compare', 'Numbertitle', 'off')
+% subplot(3,1,1)
+% plot(FbandOrig,InDataFftDb)
+% grid on;
+% grid minor;
+% title('Single-Sided Amplitude Spectrum of Data before filter')
+% xlabel('Time')
+% ylabel('Amp')
+% 
+% subplot(3,1,2)
+% plot(FbandOrig,ImpuseRespFftDb)
+% grid on;
+% grid minor;
+% title('Cic Frequency response')
+% xlabel('f (Hz)')
+% ylabel('Amp')
+% 
+% subplot(3,1,3)
+% plot(Fband,FilteredDataFftDb)
+% grid on;
+% grid minor;
+% title('Single-Sided Amplitude Spectrum of Data after filter')
+% xlabel('f (Hz)')
+% ylabel('Amp')
+% 
+% figure('name','Impulse Response Time/Freq', 'Numbertitle', 'off')
+% subplot(2,1,1)
+% plot(FbandOrig,ImpulseResp)
+% grid on;
+% grid minor;
+% title('In Signal')
+% xlabel('Time')
+% ylabel('Amp')
+% 
+% subplot(2,1,2)
+% plot(FbandOrig,ImpuseRespFftDb)
+% grid on;
+% grid minor;
+% title('Single-Sided Amplitude Spectrum of InData')
+% xlabel('f (Hz)')
+% ylabel('Amp')
+
+
+figure('name','In Data Time/Freq', 'Numbertitle', 'off')
+plot(Hdb)
+grid on;
+grid minor;
+title('In Signal')
+xlabel('Time')
+ylabel('Amp')
+
+% figure(2)
+% plot(IdealCicFFtDb)
+% grid on;
+% grid minor;
+% title('Filtered Data')
+% xlabel('Time')
+% ylabel('Amp')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+ 512 - 0
src/src/Sim/ImpResp2.txt

@@ -0,0 +1,512 @@
+              163820
+              982920
+             2981524
+             6683856
+            12614140
+            21296600
+            33255460
+            49014944
+            69099276
+            94032680
+           124339380
+           160543600
+           202514284
+           248809816
+           297857524
+           348084736
+           397918780
+           445786984
+           490116676
+           529335184
+           561869836
+           586147960
+           600596884
+           603643936
+           594699364
+           575139256
+           546536284
+           510463120
+           468492436
+           422196904
+           373149196
+           322921984
+           273087940
+           225219736
+           180890044
+           141671536
+           108481604
+            80927080
+            58483740
+            40627360
+            26833716
+            16578584
+             9337740
+             4586960
+             1802020
+              458696
+               32764
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0
+                   0