|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : janvier 2012 Messages : 12 ![]() |
Bonjour mes amis,
j'ai un programme qui est écrit avec matlab mais je dois l'écrire en langage C pour que je puisse l'intégrer dans une carte DSP (en fait je suis un peu nulle en C) code .m : Code :
|
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Développeur informatique Inscription : décembre 2011 Messages : 692 ![]() |
|
|
|
00
|
|
|
#3 | |||
|
Membre éclairé
![]() ![]() Inscription : juillet 2006 Messages : 290 ![]() |
Citation:
|
|||
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() ![]() Inscription : juin 2009 Messages : 806 ![]() |
La définition de Af est quand même un peu difficile... Tu l'as obtenu d'un calcul cette matrice ? Pourquoi entrer les valeurs à la main avec tellement de risques de se tromper ? Les fonctions plot et subplot ne sont je présume pas à porter sur ton DSP ?
J'ai fait une fois un portage de code Matlab vers DSP, pour un préamplificateur pour guitare. On a porté les codes des filtres et de la distorsion. Ce n'est pas super facile. La première remarque que je peux faire est ta boucle for. L'utilisation d'une écriture telle que y(i, Tu utilises la fonction sound (pour générer du son vu son nom ^^). Ton application DSP va prendre du son en entrée, le modifier et l'envoyer sur la sortie ? Ton entrée est ici t ?
__________________
Pour les adeptes du langage SMS, allez ici et ramenez la traduction française ^^ Pour vos problèmes d'embarqué, utilisez le forum dédié ! |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : janvier 2012 Messages : 12 ![]() |
Le programme cree un son d'une note de piano (synthese sonore)
t=0:1/44.1e3:4; créé le vecteur temps d'une durée de 4s avec une fréquence d'échantillonnage de 44.1kHz. * Le terme exp(-3.5.*t) permet l'atténuation du signal au fil du temps. * Le terme heaviside(t) n'a ici pas grande utilité ici vu que ton vecteur temps t d'entrée est positif. If ne fait que mettre des NaN sur les premières valeurs y(:,1). * Le terme sin(2.*pi.*f(i).*t) permet de générer le signal à la fréquence d'harmonique f(i). * Le terme Af(i,2) permet de fixer l'amplitude de l'harmonique correspondante. Tu as alors à la fin de la boucle une harmonique sur chaque ligne y(i, Ton signal final Y est la somme de toutes ces harmoniques Y=sum(y);. |
|
|
00
|
|
|
#6 |
|
Membre éclairé
![]() Enseignant Inscription : janvier 2012 Messages : 190 ![]() |
salut !
si tu dois faire ça une seule fois, copier-coller les données dans un éditeur de texte digne de ce nom, ainsi que les fonctions que tu donnes dans ton dernier post, et tu places tout çà dans un fichier source.c si tu dois faire cette gymnastique très souvent, il vaut mieux utiliser les procédures fopen, fprintf, fclose de MATLAB (j'ai vu que ça existe google -> http://www.mathworks.fr/help/techdoc.../f5-15544.html) pour lui faire imprimer un fichier source.c. dans source.c main fait une boucle sur le temps et produit un tableau ou un fichier des échantillons donnés par Y(t). perso j'ai utilisé un fichier, un échantillonnage 16 bits. je l'ai importé dans audacity (plot et sound) ! le résultat audio : c'est un piano sans pédale (amortissement un peu trop rapide) merci d'avoir ouvert le sujet : je n'avais jamais envisager de créer des samples en C. si tu es intéressé le petit bout de code que j'ai écrit. A+ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com