Výpočet konvoluce v C – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Výpočet konvoluce v C – C / C++ – Fórum – Programujte.comVýpočet konvoluce v C – C / C++ – Fórum – Programujte.com

 

Grommi0
Duch
10. 11. 2012   #1
-
0
-

Potřebuji algoritmus pro výpočet konvoluce. Mám 2 pole: Signál např. o n=4 prvcích a jádro např. o x=3 prvcích.

Signál je pole libovol. kladných čísel a jádro je pole lichého počtu prvků. 

Jádro[3] = 1,2,1

Jádro[5] = 1,2,4,2,1

Nevím jak to správně napsat. Vím, že pomocí cyklů jen stále nemohu přijít jak na to.

Nahlásit jako SPAM
IP: 77.242.85.–
vitamin+8
Grafoman
10. 11. 2012   #2
-
0
-

 V C sa my to nechce robit, ale v c++ to vyzera asi takto:

#include <iostream>
#include <vector>
using namespace std;

int main(){
	vector<int> signal{1, 7, 4, 0};
	vector<int> jadro{1, 2, 1};
	vector<int> vysledok(signal.size() + jadro.size() - 1, 0);
	
	for(size_t s = 0; s < signal.size(); ++s)
		for(size_t j = 0; j < jadro.size(); ++j)
			vysledok[s+j] += signal[s] * jadro[j];
	
	
	for(auto v : vysledok)cout << v << ", ";
}

pouzil som algoritmus z http://cs.wikipedia.org/wiki/Konvoluce

Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Jiří G
~ Anonymní uživatel
1 příspěvek
10. 11. 2012   #3
-
0
-

#1 Grommi

#include <stdio.h>
#define delkaSignal 4
#define delkaJadro 3

int main()
{
    int poleSignal[delkaSignal+delkaJadro]={0,1,7,4,0};
    int poleJadro[delkaJadro]={1,2,1};
    int poleVysl[delkaSignal]={0};

    for (short j=0;j<delkaSignal;j++)
    {
        for (short i=0;i<delkaJadro;i++)
        {
            poleVysl[j]+=poleSignal[i+j]*poleJadro[i];
        }
        printf("%d, ",poleVysl[j]);
    }
    return 0;
}

Nahlásit jako SPAM
IP: 89.103.120.–
vitamin+8
Grafoman
10. 11. 2012   #4
-
0
-

#3 Jiří G
Ten tvoj kod je daky divny a mas v poleSignal jednu nulu navyse.

Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Grommi0
Duch
12. 11. 2012   #5
-
0
-

Zkoušel jsem to a pořád to nefunguje. Koukal by na to někdo prosím ?! Jen kde může být chyba.

Zdroják: http://www11.zippyshare.com/v/46748158/file.html

Děkuju za pomoc.

Nahlásit jako SPAM
IP: 89.176.2.–
vitamin+8
Grafoman
12. 11. 2012   #6
-
0
-

   


	//vector<int> signal{1, 7, 4, 0};
	int signal[4] = {1, 7, 4, 0};
	//vector<int> jadro{1, 2, 1};
	int jadro[3] = {1, 2, 1};
	//vector<int> vysledok(signal.size() + jadro.size() - 1, 0);
	int vysledok[4 + 3 - 1];
	for(size_t i = 0; i < (4 + 3 - 1); ++i)vysledok[i] = 0; //vynulovanie vysledku 
	
	//for(size_t s = 0; s < signal.size(); ++s)
	//	for(size_t j = 0; j < jadro.size(); ++j)
	//		vysledok[s+j] += signal[s] * jadro[j];
	
	for(size_t s = 0; s < 4; ++s)
		for(size_t j = 0; j < 3; ++j)
			vysledok[s+j] += signal[s] * jadro[j];
	
	//vypis vysledku, prvy a posledny prvok vysledku sa ignoruje:
	for(size_t i = 1; i < (4 + 3 - 1) -1; ++i)printf("%d, ", vysledok[i]);
}
Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 109 hostů

Podobná vlákna

Výpočet 1D konvoluce — založil leknin

Vypocet pi — založil Nemo_001

Výpočet na GK — založil Midnight

Vypocet v C# — založil vyhno

Výpočet normály — založil lukas.balaz

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý