C++ Bc. 14 cpp: Porovnání verzí
Bez shrnutí editace |
m +kategorie programovani, c++ |
||
(Nejsou zobrazeny 3 mezilehlé verze od 2 dalších uživatelů.) | |||
Řádek 1: | Řádek 1: | ||
[ [[C | #include <iostream> | ||
#include <matvec/matvec.h> | |||
GNU_gama::Mat<int> filtr(const GNU_gama::Mat<int>& N, int kernel=3) | |||
{ | |||
const int K = kernel/2; | |||
GNU_gama::Mat<int> M(N.rows(), N.cols()); | |||
for (int i=1; i<=N.rows(); i++) | |||
for (int j=1; j<=N.cols(); j++) | |||
{ | |||
int s = 0; | |||
int n = 0; | |||
for (int a=-K; a<=K; a++) | |||
for (int b=-K; b<=K; b++) | |||
{ | |||
int k = i+a; | |||
int l = j+b; | |||
if (k < 1 || k > N.rows()) continue; | |||
if (l < 1 || l > N.cols()) continue; | |||
s += N(k,l); | |||
n++; | |||
} | |||
M(i,j) = s/n; | |||
} | |||
return M; | |||
} | |||
int main() | |||
{ | |||
GNU_gama::Mat<int> A(10,15); | |||
A = | |||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, | |||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, | |||
0,0,9,9,0,0,0,0,0,0,0,0,0,0,2, | |||
0,0,9,9,0,0,0,0,0,0,3,3,0,0,3, | |||
0,0,9,9,0,0,0,0,0,0,3,3,0,0,4, | |||
0,0,9,9,0,0,0,0,0,0,0,0,0,0,5, | |||
0,0,9,9,9,9,9,0,0,0,0,0,0,0,6, | |||
0,0,9,9,9,9,9,0,0,0,0,0,0,0,7, | |||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,8, | |||
0,1,2,3,4,5,6,7,8,0,0,0,0,0,9; | |||
std::cout << A << "\n" << filtr(A,3); | |||
} | |||
'''výstup''' | |||
10 15 | |||
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | |||
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 | |||
0 0 9 9 0 0 0 0 0 0 0 0 0 0 2 | |||
0 0 9 9 0 0 0 0 0 0 3 3 0 0 3 | |||
0 0 9 9 0 0 0 0 0 0 3 3 0 0 4 | |||
0 0 9 9 0 0 0 0 0 0 0 0 0 0 5 | |||
0 0 9 9 9 9 9 0 0 0 0 0 0 0 6 | |||
0 0 9 9 9 9 9 0 0 0 0 0 0 0 7 | |||
0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 | |||
0 1 2 3 4 5 6 7 8 0 0 0 0 0 9 | |||
10 15 | |||
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | |||
0 1 2 2 1 0 0 0 0 0 0 0 0 0 0 | |||
0 2 4 4 2 0 0 0 0 0 0 0 0 0 1 | |||
0 3 6 6 3 0 0 0 0 0 1 1 0 1 1 | |||
0 3 6 6 3 0 0 0 0 0 1 1 0 1 2 | |||
0 3 6 7 5 3 2 1 0 0 0 0 0 1 2 | |||
0 3 6 8 7 6 4 2 0 0 0 0 0 2 3 | |||
0 2 4 6 6 6 4 2 0 0 0 0 0 2 3 | |||
0 1 2 4 4 4 4 3 1 0 0 0 0 2 4 | |||
0 0 1 1 2 2 3 3 2 1 0 0 0 2 4 | |||
[ [[C++ Bc. 14|Zpět]] ] | |||
[[Kategorie:Programování]] | |||
[[Kategorie:C++]] |
Aktuální verze z 2. 9. 2006, 10:46
#include <iostream> #include <matvec/matvec.h> GNU_gama::Mat<int> filtr(const GNU_gama::Mat<int>& N, int kernel=3) { const int K = kernel/2; GNU_gama::Mat<int> M(N.rows(), N.cols()); for (int i=1; i<=N.rows(); i++) for (int j=1; j<=N.cols(); j++) { int s = 0; int n = 0; for (int a=-K; a<=K; a++) for (int b=-K; b<=K; b++) { int k = i+a; int l = j+b; if (k < 1 || k > N.rows()) continue; if (l < 1 || l > N.cols()) continue; s += N(k,l); n++; } M(i,j) = s/n; } return M; } int main() { GNU_gama::Mat<int> A(10,15); A = 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, 0,0,9,9,0,0,0,0,0,0,0,0,0,0,2, 0,0,9,9,0,0,0,0,0,0,3,3,0,0,3, 0,0,9,9,0,0,0,0,0,0,3,3,0,0,4, 0,0,9,9,0,0,0,0,0,0,0,0,0,0,5, 0,0,9,9,9,9,9,0,0,0,0,0,0,0,6, 0,0,9,9,9,9,9,0,0,0,0,0,0,0,7, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,8, 0,1,2,3,4,5,6,7,8,0,0,0,0,0,9; std::cout << A << "\n" << filtr(A,3); }
výstup
10 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 9 9 0 0 0 0 0 0 0 0 0 0 2 0 0 9 9 0 0 0 0 0 0 3 3 0 0 3 0 0 9 9 0 0 0 0 0 0 3 3 0 0 4 0 0 9 9 0 0 0 0 0 0 0 0 0 0 5 0 0 9 9 9 9 9 0 0 0 0 0 0 0 6 0 0 9 9 9 9 9 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 1 2 3 4 5 6 7 8 0 0 0 0 0 9 10 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 1 0 0 0 0 0 0 0 0 0 0 0 2 4 4 2 0 0 0 0 0 0 0 0 0 1 0 3 6 6 3 0 0 0 0 0 1 1 0 1 1 0 3 6 6 3 0 0 0 0 0 1 1 0 1 2 0 3 6 7 5 3 2 1 0 0 0 0 0 1 2 0 3 6 8 7 6 4 2 0 0 0 0 0 2 3 0 2 4 6 6 6 4 2 0 0 0 0 0 2 3 0 1 2 4 4 4 4 3 1 0 0 0 0 2 4 0 0 1 1 2 2 3 3 2 1 0 0 0 2 4
[ Zpět ]