Fréquences

Signaler
Messages postés
58
Date d'inscription
dimanche 29 janvier 2012
Statut
Membre
Dernière intervention
29 avril 2012
-
Messages postés
58
Date d'inscription
dimanche 29 janvier 2012
Statut
Membre
Dernière intervention
29 avril 2012
-
Salut,

dans un programme de traitment de signal je définie la periode d'un signal en 0.000001 (s) je stock cette valeur dans une variable T0 (donc la frequence est de 0.1 MHz) je calcul les valeurs du signal en fonction du temps t et du coup j'ai deux tableaux l'un pour les abcisses ( temps ) et l'autre les images du signal s(t). ce signal est à l'entrée d'un filtre passe bas qui a une frequence de coupure fc. le problème que j'ai est lorsque j'essaye de donner cette frequence de coupure de l'ordre d'un MHz et je la stock dans un tableau (puisque f = 1 / t et t varie de 1 à 1200) pendant l'execution pas a pas je remarque que t tend vers 0 et du coup f est infinie (f n'est pas la frequence de coupure mais celle de la fonction de transfert de filtre) signal s(t) donc pas de filtage. j'éspere que vous avez compris le problème. aidez moi svp

9 réponses


Bonjour

j'éspere que vous avez compris le problème.

Pantoute (Pas du tout)

Si j'ai bien deviné, tu as essayé de transformer un ordinateur en oscilloscope et ça ne marche. Si tu as une valeur qui tend vers la mauvaise chose (encore qu'il faudrait savoir c'est quoi la bonne chose); c'est qu'il doit y avoir une erreur à quelque part. Sans le code, qui devrait être inclus en partie, pour respecter les usages du lieu; on ne peut que spéculer:

Transtypage automatique de VB qui se passe mal.

Variable de type Integer qui devrait être de type long.

Mélange d'entiers et de nombres à virgule flottante suivi encore une fois d'un transtypage automatique qui se passe mal.

Division d'un très grand nombre par un très petit nombre

Une fonction Val() qui plante.

Un mauvais séparateur décimal à la mauvaise place

etc...
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
234
Bonjour,
tu peux déjà expliquer ton calcul ?
je définie la periode d'un signal en 0.000001 (s) je stock cette valeur dans une variable T0 (donc la frequence est de 0.1 MHz)
1/0.000001 1000000>> 1Mhz
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
234
A noter (latences obligent, notamment celles de l'affichage) que :
sur ma machine qui tourne à 3.10 ghz,
cette simple boucle, sur 1 million
For i = 1 To 1000000
  Label1.Caption = i * 0.3
Next

demande 2,7 secondes, si affichage dans un label
et si l'on ne fait AUCUNE opération, juste Label1.caption i>> 2,5 secondes

Dur dur (impossible) , alors, de visualiser en temps réel ce qui se passe avec une période de 0.000001 secondes...
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
14770
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
27 février 2021
151
Bonjour,

0.000001 (s) -> 1 microseconde (µs), plutôt, ce sera plus lisible.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
234
cela fait toujours 1 millionième de seconde
et impossible de visualiser en réel un million d'opérations par seconde, même avec un processeur à 3,1 Ghz.
Le processeur a beau être, lui, rapide, d'autres latences sont bel et bien présentes.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
234
Pour mémoire :
la période de latence est :
le délai entre une action et le déclenchement d'une réaction, à savoir un retardement
.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
58
Date d'inscription
dimanche 29 janvier 2012
Statut
Membre
Dernière intervention
29 avril 2012

Bonjour,
j'ai remarqué que cela est impossible moi aussi.
J'explique pour ceux qui n'ont pas compris:

dans mon application qui permet de saisir un signal puis tracer sa courbe en domaine temps et fréquence à l'entrée et sortie d'un filtre, je me suis bloqué sur cette partie du traçage et fréquence. bien que la fréquence des signaux à tracer varie de 1 Hz à 1 MHz, on peut limiter l'intervalle comme suit:

Je demande à l'utilisateur de saisir cela:
La période T en µs (µs< T < 1S)
puis je fais F = 1 / T.

Le nombre de période à visualiser NP (NP < 10).

Puis au lieu de [1 µs; 1 s] j'aurais comme intervalle [0 , NP*T] pour le domaine temps et pour le domaine fréquence ça sera l'inverse et beaucoup plus limité que le premier. Cela est mieux n'est ce pas ?

Maintenant je cherche le nombre de points correspondants à une période. j'ai remarqué la chose suivante:

400 pixels ---------> T = 10 (µs)
donc x ---------> T' (µs)

T' est saisi par l'utilisateur

donc x 400 * T' µs / 10 µs 40 * T'

cet x est le nombre de points correspondant à une période T'. donc pour visualiser le nombre de périodes désiré on fait x = x * NP

donc j'ai fait ça pour la partie calcul:
x = 40 * T0 * NP
        For t = 1 To x

            For k = 1 To ord
                n = 2 * k - 1
                sc(t) += ((4 * amp) / (n * Math.PI)) * Math.Cos((n * 2 * Math.PI / T0) * t - (Math.PI / 2))
            Next k
            sc(t) = moy + sc(t)
        Next t


ord et amp T0 sont les paramètres du signal saisis par l'utilisateur.

ça ne marche pas encore.
j'utilise l'execution pas a pas et je remarque que la boucle n'est pas exécutée: il calcule juste (x = 401) et saute tout et du coup j'ai pas de graphe ni rien. je ne sais pas la cause de ce saut.
Messages postés
58
Date d'inscription
dimanche 29 janvier 2012
Statut
Membre
Dernière intervention
29 avril 2012

est ce que je peux utiliser le controle chart pour résoudre ce problème? est ce que c'est pratique ?
Messages postés
58
Date d'inscription
dimanche 29 janvier 2012
Statut
Membre
Dernière intervention
29 avril 2012

il la saute car x << 1.

y a t il pas moyen de travailler avec controle chart avec des courbes et pas de colonne ?