2. int M=4;
3. double funkcja_sygnału[6]={1.0,2.0,4.0,8.0,3.3,7.7};
4. double filtr[4]={2.0,3.0,4.0,5.0};
5. double Y[9]={0.0};//bo wynik jest mniejszy o 1 element od sumy ilości elementó
w mnoĹĽonych funkcji
6. double tab_lista_kolowa[9]={0.0};// max=N+M-1
7.
8. //int NN=6;
9. //int M=10;
10. //double funkcja_sygnału[6]={1.0,2.0,4.0,8.0,3.3,7.7};
11. //double filtr[10]={2.0,3.0,4.0,5.0,1.0,2.0,4.0,8.0,3.3,7.7};
12. //double Y[15]={0.0};//bo wynik jest mniejszy o 1 element od sumy ilości elemen
tĂłw mnoĹĽonych funkcji
13. //double tab_lista_kolowa[15]={0.0};// max=N+M-1
14.
15. int indeks_wyniku=0;
16. //Splot Sposob nr 1:
17. indeks_wyniku=NN+M-1;
18. //wynik jest mniejszy o 1 element od sumy ilości elementów mnozonych 2 funkcji
19.
20. //swprintf(szBuffer2, _T(" c....filtr=. %1.5lf .. "),filtr[M1]);/ wsprintfWfloat
21. //TextOut(kontekst,37, 37,szBuffer2,wcslen(szBuffer2));
22. //MessageBox(hWnd2,_T(".filtr!!."),_T(".filtr!!."),MB_OK);
23.
24. for(int i=0;i<indeks_wyniku;i++){ Y[i]=0.0; }
25.
26. czas_start1=pomiar_czasu();
27. /*p1*///////// Splot ///////////////////////////////
28. int dlugosc_funkc_sygnalu=0;
29. int dlugosc_filtru=0;
30. dlugosc_funkc_sygnalu=NN;
31. dlugosc_filtru=M;
32. for(int rnd=0;rnd<1;rnd++)/////////
33. {
34. for(int i=0;i<indeks_wyniku;i++)
35. {
36. for(int j=0;j<dlugosc_funkc_sygnalu;j++)//kazdy element funkcji
37. przemnozyc przez to:
38. {
39. if((i-j)<0)break;
40. if((i-j)>=dlugosc_filtru){j=i-dlugosc_filtru; continue;}
41. //od nowej pętli z ustawionym nowym j ,j=i-M+1; j=j-1;
42. //tylko mnozyc gdy element filtru jest nad funkcja:
43. Y[i]=Y[i]+funkcja_sygnału[j]*filtr[i-j];
44. }
45. // nie ma listy kołowej.
46. }
47. }
48. /*k1*//////////////////////////////////////////////
49. czas_stop1=pomiar_czasu();
50. czasSzybkie1=czasSzybkie1+czas_stop1-czas_start1;
51.
52. swprintf(szBuffer2, _T(" czasSzybkie1= %1.2lf "),czasSzybkie1);// bo wsprintfW
nie ma float
53. TextOut(kontekst,33, 33,szBuffer2,wcslen(szBuffer2));
54. MessageBox(hWnd2,_T(".czasSzybkie1!!."),_T(".czasSzybkie1!!."),MB_OK);
55.
56. double wynik1=0;
57. for(int i=0;i<indeks_wyniku;i++)
58. {
59. wynik1=wynik1+Y[i];
60. }
61.
62. swprintf(szBuffer2, _T(" wynik1= %1.2lf "),wynik1);// bo wsprintfW nie ma float
63. TextOut(kontekst,33, 33,szBuffer2,wcslen(szBuffer2));
64. MessageBox(hWnd2,_T(".wynik1!!."),_T(".wynik1!!."),MB_OK);
65.
66. // Sposob nr 2:
67. //indeks_wyniku=NN+M-1;
68. //zapis filtru do listy.kołowej
69. //double tab_lista_kolowa[53999]={0};// max=N+M-1
70. double tmp_el_nr_ostat=0;
71.
72. tab_lista_kolowa[0]=filtr[0];
73. for(int i=0;i<indeks_wyniku;i++)
74. {
75. Y[i]=0.0;
76. tab_lista_kolowa[i]=0.0;
77. }
78.
79. //int liccb=0,liccb2=0,liccb3=0;
80. tab_lista_kolowa[0]=filtr[0];
81. for(int i=NN;i<indeks_wyniku;i++)
82. {
83. //liccb++;liccb2=(M-1)-i+NN;liccb3=i;
84. tab_lista_kolowa[i]=filtr[(M-1)-i+NN];
85. }
86.
87. czasSzybkie1=0.0;
88. czas_start1=pomiar_czasu();
89. /*p2*//////////////////////////////////////////////
90. for(int rnd=0;rnd<1;rnd++)//////////////////
91. {
92. for(int i=0;i<indeks_wyniku;i++)
93. {
94. for(int j=0;j<NN;j++)
95. {
96. Y[i]=Y[i]+funkcja_sygnału[j]*tab_lista_kolowa[j];
97. }
98. tmp_el_nr_ostat=tab_lista_kolowa[indeks_wyniku-1];//indeks_wyniku=NN+M-
1=53999
99. for(int k=indeks_wyniku-1;k>=1;k--)
100. {
101. tab_lista_kolowa[k]=tab_lista_kolowa[k-1];//
102. }
103. tab_lista_kolowa[0]=tmp_el_nr_ostat;
104. }
105. }
106.
107. /*k2*//////////////////////////////////////////////
108. czas_stop1=pomiar_czasu();
109. czasSzybkie1=czasSzybkie1+czas_stop1-czas_start1;
110.
111. swprintf(szBuffer2, _T(" czasSzybkie1= %1.2lf "),czasSzybkie1);// bo wsprintfW
nie ma float
112. TextOut(kontekst,33, 33,szBuffer2,wcslen(szBuffer2));
113. MessageBox(hWnd2,_T(".czasSzybkie1!!."),_T(".czasSzybkie1!!."),MB_OK);
114. double wynik2=0;
115. for(int i=0;i<indeks_wyniku;i++)
116. {
117. wynik2=wynik2+Y[i];
118. }
119. swprintf(szBuffer2, _T(" wynik2= %1.2lf "),wynik2);// bo wsprintfW nie ma float
120. TextOut(kontekst,33, 33,szBuffer2,wcslen(szBuffer2));
121. MessageBox(hWnd2,_T(".wynik2!!."),_T(".wynik2!!."),MB_OK);
122.
123. swprintf(szBuffer2, _T(" wynik2-wynik1= %1.2lf "),wynik2-
wynik1);// bo wsprintfW nie ma float
124. TextOut(kontekst,33, 33,szBuffer2,wcslen(szBuffer2));
125. MessageBox(hWnd2,_T(".wynik2-wynik1!!."),_T(".wynik2-wynik1!!."),MB_OK); 126. ///////////////////////////