La fonction de convolution Scilab convol(x,y) n'est pas toujours très facile à mettre en oeuvre car elle ne traite qu'une partie du problème. La définition du produit de convolution continu est :
(f \star g)(\tau) = \int_a^b{f(t) \cdot g(\tau-t) \cdot dt}
En fait, la fonction Scilab convol(x,y) implémente la convolution discrète dont la définition est :
(f \star g)(m) = \sum_n{f(n) \cdot g(m-n)}
On remarque tout de suite que cette définition suppose que la période d'échantillonnage est l'unité de temps. Ainsi, lorsqu'on se sert de cette fonction pour estimer une convolution continue, il ne faut pas oublier de multiplier le résultat par dt :
...
dt = ....;
s = convol(h,e)*dt; // attention à dt
...
Un petit problème en MATLAB (ou en Scilab)
Cher monsieur,
Je vous écris pour vous faire part d'un petit problème de programmation. Etant donné que cette question se situe hors du cadre de votre enseignement, je ne vous sollicite. Le problème est le suivant.
Programmer une fonction scilab qui prend en en entrée trois paramètre: N, M et L.
retourner une matrice de M lignes, L colonnes de la forme suivante:
[ 1 N+1 2*N+1 3*N+1.................L*N+1]
[ 2 N+2 2*N+2 3*N+2.................L*N+2]
[ 3 N+3 2*N+3 3*N+3.................L*N+3]
.............................................
.............................................
[ M N+M 2*N+M 3*N+M.................L*N+M]
Bien évidemment, la fonction ne nécessite aucune boucle....
Une petite idée?
Excusez moi, on dirait que la matrice est mal passée ainsi que le reste de l'énoncé
Pour introduire du code (genre programmation) qui doit être affiché tel quel (dans ce cas attention à la longueur des lignes) il faut l'encadrer par :
[@ ... @]
C'est, en fait, assez facile si on remarque que l'expression que vous recherchez paut s'écrire:
[1 1 1 ...] [0 1 2 ... L]
[2 2 2 ...] [0 1 2 ... L]
[3 3 3 ...] + N*[0 1 2 ... L]
[.........] [0 1 2 ... L]
[M M M ...] [0 1 2 ... L]
Les deux matrices qui interviennent dans cette expression sont assez faciles à engendrer avec des générateurs Scilab standards.
Que pensez-vous de l'expression :
cumsum(ones(M,L+1),'r')+N*(cumsum(ones(M,L+1),'c')-1)