Calculer les centiles et valeurs NaN

Bonjour,
il me semble que le VI centiles calcul mal dès qu'il y a une valeur "NaN" dans le tableau d'entrée. En effet il faudrait que les valeurs "NaN" soient totalement ignorées dans le calcul d'un centile (celà n'a pas de sens de situer NaN vis à vis des autres nombres, ni dire que 10% des valeurs du tableau sont supérieures à NaN).
Actuellement on peut avoir NaN en sortie car le VI ne fait que trier le tableau et  chercher dedans.
Cela semble cohérent que -Inf et +Inf soient considérés comme étant des valeurs et donc fassent partie du calcul du centile, mais NaN c'est totalement absurde.
Que pensez vous du fonctionnement de ce VI ? 
Cordialement,
Résolu !
Accéder à la solution.

salut la valeur symbolique « NAN » pour signifier « Pas un nombre », de l’anglais « Not A Number », représente la valeur à virgule flottante produite par des opérations non valides ou des calculs erronés. Par définition les opérations à virgule flottante propagent NaN, toutes les opérations qui utilisent cette donnée donneront un résultat égal à NAN. Donc pour moi logique.
Si tu veux pas, tu supprimes les NAN avant la fonction
A+
Luc Desruelle | Voir mon profil | LabVIEW Code & blog
Co-auteur livre LabVIEW : Programmation et applications
CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW
CLD : Certified LabVIEW Developer / Certifié Développeur LabVIEW

Similar Messages

  • Calculating intersection of circles giving NaN first 'round'.

    See attachment.
    When I give the correct parameters as input, the output is always NaN.
    However, when I run the VI again, the correct x,y coordinates are returned.
    Obviously this is not correct behaviour I want in my VI. What did I do wrong here?
    Thanks,
    Marvin
    Solved!
    Go to Solution.
    Attachments:
    Calculate Intersection Circles.vi ‏32 KB

    marvin117 wrote:
    What's the point of local variables if they don't work that way?
    Although local variables are often demonized, there are proper uses for them.  Coming from a text-programming background, you're used to using variables and, presumably, not accustomed to things happening in parallel.  The first thing I noticed, which is certainly not obvious to anyone, is that your local variables are read in every frame of the Sequence structure immediately, but the indicators aren't written until the calculations happen in the first frame.  In this way, the Sequence structure is highly non-intuitive.  National Instruments owes you an apology for that.
    The second thing I noticed was, in your second frame, that you were using the results of calculations with a local variable in the same frame.  You'll never be able to know that the calculations will happen before the locals are read.  There's your classic race condition.
    I (almost) only use local variables to update front panel control values.  If I find myself using them to read control values, I hang my head and wish I had designed my code better.  Try to think in terms of "The wire is the variable."  It's almost always the right way to think about data, and data flow.
    Jim
    You're entirely bonkers. But I'll tell you a secret. All the best people are. ~ Alice

  • Comment obtenir des calculs exacts avec la précision affichée (les arrondis engendrent des résultats faux)

    Comment obtenir des calculs exacts avec la précision affichée (les arrondis engendrent des résultats faux)

    Apprenez à vous servir d'un ordinateur.
    Écrire "les arrondis engendrent des résultats faux" prouve simplement que vous n'avez rien compris à ce que vous faites.
    Quand vous demandez à Numbers d'afficher les nombres avec deux décimales, cela s'applique à l'affichage, pas au contenu des cellules.
    1234,567 sera affiché 1234,57 mais la valeur stockée restera égale à 1234,567.
    De ce fait un gamin de cinq ans peut comprendre que la somme des arrondis affichés peut être différente de l'arrondi de la somme des valeurs stockées.
    La solution est simple et a été décrite ici à de multiples reprises : travailler de façàn cohérente.
    Si vous devez calculer la somme de valeurs arrondies, faites en sorte que les valeurs stockées soient égales aux valeur affichées.
    Calculer un montant de TVA avec la formule
    = brut * 0,196 est ridicule  puisqu'on a de fortes chances d'avoir trois chiffres après la virgule.
    Le véritable montant de la TVA se calcule avec
    =ARRONDI(brut * 0,196;2)
    Prenez-soin d'utiliser des formules correctes et vous aurez des résultats corrects ou plutot des résultats correspondant à votre attente.
    Yvan KOENIG (VALLAURIS, France) jeudi 11 août 2011 12:40:45
    iMac 21”5, i7, 2.8 GHz, 4 Gbytes, 1 Tbytes, mac OS X 10.6.8 and 10.7.0
    My iDisk is : <http://public.me.com/koenigyvan>
    Please : Search for questions similar to your own before submitting them to the community
    To be the AW6 successor, iWork MUST integrate a TRUE DB, not a list organizer !

  • Stockage de données numériques dans un tableau pour pouvoir les traiter

    Bonjour,
    Je suis actuellement en stage, et mon sujet est : "Automatisation d'un banc de mesure du bruit émis". Je travaille essentiellement avec LabVIEW, et j'ai une question au niveau des tableaux. Alors en faite, j'utilise un analyseur de spectre et je souhaite récuperer le bruit. La fonction pour récuperer le bruit se trouve dans une boucle while et ressort seulement une donnée numérique par boucle, ce que je souhaite c'est donc de pouvoir la stocker à chaque boucle dans un tableau, puis de faire la moyenne de tableau, cependant je n'arrive pas à effectuer cela, j'ai essayé de créer un tableau mais je ne peux pas lui mettre en entrée une valeur à chaque fois, donc si vous savez comment je pourrais procéder je suis preneur !
    Je vous remercie d'avance,
    Cdt,
    Florian
    Solved!
    Go to Solution.

    Bonjour Flod29,
    Une solution serait de créer un registre à décalage sur un tunnel de sortie de votre boucle afin de récupérer les valeurs des boucles précédentes et de calculer à partir de ces valeurs une moyenne (cf Capture1).
    Une deuxième option serait de changer le mode du tunnel de sortie de votre boucle en Indexation afin de récupérer toute les valeurs dans un tableau en sortie de boucle (cf Capture 2).
    Je vous souhaite une bonne journée,
    Cordialement,
    Sabri JATLAOUI - Certified LabVIEW Developer
    Attachments:
    Capture 1.PNG ‏5 KB
    Capture 2.PNG ‏9 KB

  • Constante numérique "absence de valeur"

    Bonjour,
    J'ai une application d'acquisition de données qui me renvoie parfois une valeur fausse, facile à identifier.
    Je souhaiterais la remplacer par une valeur "sans valeur", une sorte de case vide qui n'affecterait pas la suite des calculs.
    J'ai essayé NaN, mais ça ne convient pas (la moyenne d'un tableau contenant un NaN donne NaN).
    Résolu !
    Accéder à la solution.

    Bonjour, Si tu arrives à identifier la valeur fausse il te suffit te la supprimer de ton tableau de valeur (si tu as un tableau pour tes acquisitions) sinon tu peux mettre une structure condition si tu as la valeur fausse tu ne fais pas ton calcul sinon tu le fais.
    Bon courage.
    Philippe B.
    Certified Associate Developer / Dépt Moyens d'essais
    www.ingenia-system.com

  • Récupération des valeurs de position Y d'un curseur en mode multi-tracé

    Bonjour, J’utilise Labview 8.5, je voudrai savoir comment récupérer les valeurs des positions Y d'un curseur lorsqu'il est en mode multi-tracé. Lorsque l'on fait apparaître la légende des curseurs, nous pouvons voir ces différentes valeurs des y selon les tracés (voir photo jointe). Dans mon cas, j'aimerai pouvoir les récupérer pour les utiliser.Est-ce possible ? Si oui, comment? Merci d'avance   
    Attachments:
    valeur position.JPG ‏147 KB

    Oui j'ai bien trouvé le paramètre "liste de curseurs ". Mais mon problème est que celui-ci renvoie un tableau de curseur. Chaque curseur est composé par un cluster: celui-ci permet entre autres de récupérer la position en x et y du curseur. Malheureusement en passant par ce système il ne nous est pas possible de récupérer les valeurs Y de chaque tracé pour un même point X lorsque ce curseur est configuré en multi-tracé. En effet en regardant le cluster, les positions X et Y ne sont pas des tableaux !!! Il prend alors à chaque fois la valeur du tracé actif. C'est étonnant que l'on ne puisse pas récupérer facilement ces valeurs. Néanmoins, j'ai du trouvé une façon de récupérer les différentes valeurs, mais elle me paraît bien lourde.Je n'utilise pas le curseur en mode multi-tracé mais seulement en mode tracé unique. Et dans une boucle, je viens récupérer la donnée Y en activant sur le curseur mes différents tracés un part un  (grâce à "plot" de "liste de curseurs ").Cela me permet de récupérer les valeurs Y en fonction de X. Mais par contre d'un point de vue graphisme je perds l'atout de l'affichage en multi tracé où je pouvais avoir sur chaque tracé un point correspondant à l'endroit de la mesure.  Y aurait-il une façon plus simple de faire me permettant de rester en mode multi-tracé?
    Merci d'avance  

  • Afficher moyenne toute les secondes

    Bonjour,
    j'acquéri 4 signaux analogiques provenant d'afficheurs numériques via une carte ni usb 6008.
    les signaux ètant brruités et et les variations de valeur moyenne étant lente, j'éssaie d'afficher toutes les 250ms la moyenne sur 4 secondes du signal.
    Est-ce que cela est possible car je n'arrive pas a trouver de solution avec LV.
    Cordialement
    Justin
    Résolu !
    Accéder à la solution.

    Il y a un VI qui fait la moyenne Pt par Pt. Tu indiques ta nouvelle valeur, le nombre de points pour la moyenne glissante et voilà...
    Cordialement,
    Micaël DA SILVA

  • Balayage et conversion d'une chaine "scientifique" en valeurs "décimales"

    Bonjour à tous,
    Je souhaite votre aide pour un petit pb que je n'arrive pas à résoudre.
    Z 7.2295E+05,Y 1.3832E-06,PHASE -89.09,CS 2.2018E-10,CP 2.2012E-10...
    Je souhaiterais balayer la chaine ci-dessus pour en retirer les valeurs"scientifiques" et les convertir en valeur "décimales" pour les mettre dans une par une dans un tableau.
    J'ai essayé quelques vi de convertion mais  mes résultats sont très moyens ! Il me manque toujours un morceau dans le tableau ...
    En fait, la chaine fait une 20 ène de mesures avec 20 valeurs au format scientifique.
    Merci.
    Cordialement

    Bonjour,
    Petite proposition. Je reste dispo si tu as des questions
    Maxime
    Certified LabVIEW Associate Developper
    Pièces jointes :
    ConversionSciDec.vi ‏12 KB

  • Graphique double échelle et calcul dynamique de l'échelle

    Merci de votre aide
    Bonjour,
    J’ai un graphique double échelle
                    Echelle A             Minimum 0                        Maximum (Variable Longueur)
                    Echelle B             Minimum 0 x Coeff           Maximum (Variable Longueur) x Coeff
    Au départ, pour l’échelle B, je calcule les deux bornes ensuite j’utilise ‘Echelle Active des X’ avec le propriété 1 pour sélectionner l’échelle B, puis ‘Xscale.RngStart’ de région’ et ‘Xscale.Maximum’
    Par contre, si en cours de route, je modfie la visu de l’échelle graphique 0, ça ne modifie pas l’échelle graphique 1. Normal, je ne fais pas le calcul
    Pour synthétiser ma demande, ce que je souhaite c’est que si je modifie l’échelle graphique 0 ou 1, ça modifie la 2ème échelle en conséquence. Je cherche une méthode simple, et ne pas à chaque mesure, aller regarder l’échelle 0, regarder s’il y a eu modif, et vice versa avec l’échelle 1.
    J’espère que ma demande est assez explicite.

    Je pense que tu aura tes réponses ici :
    http://forums.ni.com/t5/Discussions-de-produit-de-NI/Modifier-dynamiquement-les-%C3%A9chelle-d-un-gr...
    à +
    Dcharala, Ingénieur en instrumentation, pratiquant de LabVIEW 2010 sur Windows XP.

  • Use of applescript in numbers to automatically analyze data?

    Hi all,
    I am trying to figure out if it is possible to use applescript and numbers to achieve the following:
    (1) Import a CSV file
    (2) Work out an average and standard deviation for particular columns of data in that CSV file
    (3) Copy and paste out those averages and standard deviations to a separate numbers file, along with the name of the original data file, so in the end I have a file that contains a number of rows, each one containing the results for each data file and the file name.
    The files (from an analytical instrument) are all the same, so ideally I could use automator and/or applescript to automatically run through a directory of csv files to achieve this.
    I know only a small amount of very basic programming. I don't want someone to write this for me, but if someone could offer some pointers or examples that would be very helpful. Or tell me that what I am trying to do is foolish, and use something else instead.
    Thanks

    As I got a sample file, I was able to build a script matching the full requirements.
    Here is a revised version which may be useful for other users.
    --[SCRIPT average&stdev_CSV]
    Enregistrer le script en tant que Script : average&stdev_CSV.scpt
    déplacer le fichier ainsi créé dans le dossier
    <VolumeDeDémarrage>:Users:<votreCompte>:Library:Scripts:Applications:Numbers:
    Il vous faudra peut-être créer le dossier Numbers et peut-être même le dossier Applications.
    aller au menu Scripts , choisir Numbers puis choisir average&stdev_CSV
    Sélectionner un dossier contenant des fichiers CSV.
    Le script ouvre ces fichiers dans Numbers,
    calcule les valeurs MOYENNE() et ECARTYPE()
    écrit celles-ci avec le nom du document dans un fichier texte.
    Après traitement de tous les fichiers le fichier texte et ouvert dans Numbers.
    On peut également enregistrer le script en tant que progicile (application sou 10.6.x).
    Il suffira alors de glisser/déposer l'icone du dossier à traiter sur celle du script_application.
    --=====
    L'aide du Finder explique:
    L'Utilitaire AppleScript permet d'activer le Menu des scripts :
    Ouvrez l'Utilitaire AppleScript situé dans le dossier Applications/AppleScript.
    Cochez la case "Afficher le menu des scripts dans la barre de menus".
    --=====
    Save the script as a Script: average&stdev_CSV.scpt
    Move the newly created file into the folder:
    <startup Volume>:Users:<yourAccount>:Library:Scripts:Applications:Numbers:
    Maybe you would have to create the folder Numbers and even the folder Applications by yourself.
    go to the Scripts Menu, choose Numbers, then choose "average&stdev_CSV"
    Select a folder containing CSV files.
    The script open them in Numbers,
    calculate the AVERAGE() and STDEV() values
    write them with the file name in a text file.
    When all files are treated, the text file is opened in Numbers.
    You may also save the script as an application package (application under 10.6.x).
    Then drag & drop the icon of the folder to treat on the scipt_application icon.
    --=====
    The Finder's Help explains:
    To make the Script menu appear:
    Open the AppleScript utility located in Applications/AppleScript.
    Select the "Show Script Menu in menu bar" checkbox.
    --=====
    Yvan KOENIG (VALLAURIS, France)
    2010/06/10
    2010/06/11 -- now read the csv file only once
    --=====
    property permis : {"public.comma-separated-values-text", "public.csv"}
    property AVERAGE_loc : missing value
    property STDEV_loc : missing value
    property delim : missing value
    property deci : missing value
    property altDelim : missing value
    property altDeci : missing value
    property dossier_temporaire : missing value
    property mon_Rapport : missing value
    --=====
    Entry point used when we double click the script's icon
    or when we call it from the Scripts menu .
    on run
    if my parleAnglais() then
    set le_prompt to "Choose a folder containing CSV file …"
    else
    set le_prompt to "Choisir un dossier contenant des fichiers CSV …"
    end if -- parleAnglais
    my main(choose folder with prompt le_prompt without invisibles)
    end run
    --=====
    Entry point used when we drag & drop a folder icon on the application_script's icon
    on open sel
    my main(sel)
    end open
    --=====
    on main(selected_item) -- it's an alias
    local isFolder, nomdurapport, les_fichiers, type_ID, un_fichier, nombrededocuments, nomdutableur
    the selected folder's pathname
    set selected_item to selected_item as text
    tell application "System Events"
    set isFolder to class of disk item selected_item is folder
    end tell -- System Events
    if not isFolder then
    if my parleAnglais() then
    error "You must select a folder containing CSV file …"
    else
    error "Vous devez choisir un dossier contenant des fichiers CSV …"
    end if -- parleAnglais
    end if -- not isFolder
    Init once variables which will be used later.
    set dossier_temporaire to (path to temporary items) as text (* property *)
    set AVERAGE_loc to my getLocalizedFunctionName("Numbers", "AVERAGE") & "(" (* property *)
    set STDEV_loc to my getLocalizedFunctionName("Numbers", "STDEV") & "(" (* property *)
    set {delim, deci, altDelim, altDeci} to my getLocalized_Delimiters() (* properties *)
    set nomdurapport to "resume" & my dateTimeStamp() & ".txt" (* locale *)
    set mon_Rapport to dossier_temporaire & nomdurapport (* property *)
    Extract the list of items stored in the selected folder.
    Create the resumeyyyymmddhhmmss.txt temporary file.
    tell application "System Events"
    set les_fichiers to every disk item of folder selected_item
    make new file at end of folder dossier_temporaire with properties {name:nomdurapport}
    end tell
    Scan the items stored in the folder.
    Skip the folders and documents which aren't csv ones.
    repeat with un_fichier in les_fichiers
    tell application "System Events"
    if class of un_fichier is folder then
    set type_ID to "Oops, I‘m a folder" (* so it will not be deciphered *)
    else
    set type_ID to type identifier of un_fichier
    set un_fichier to path of un_fichier
    end if
    end tell -- System Events
    if type_ID is in my permis then my traiteun_fichier(unfichier)
    end repeat -- with un_fichier
    The scan is done, open the resumeyyyymmddhhmmss.txt temporary file in Numbers.
    tell application "Numbers"
    set nombrededocuments to count of documents
    open mon_Rapport
    repeat while (count of documents) = nombrededocuments
    delay 0.2
    end repeat
    set nomdutableur to name of document 1
    Set cells format to the Scientific one but I can't define the number of decimals !
    tell document 1 to tell sheet 1 to tell table 1
    set format of range ("B1 : " & name of last cell) to scientific
    end tell
    save document 1 in (selected_item & nomdutableur)
    end tell -- Numbers
    Delete the temporary text file
    tell application "System Events" to delete disk item mon_Rapport
    Reset properties so there content will not be stored in the script
    set AVERAGE_loc to missing value
    set STDEV_loc to missing value
    set delim to missing value
    set altDelim to missing value
    set deci to missing value
    set altDeci to missing value
    set dossier_temporaire to missing value
    set mon_Rapport to missing value
    end main
    --=====
    on traiteunfichier(unFichier) (* text item *)
    local dossierdetravail, nomdu_csvtemporaire, csv_temporaire, utile, cnt, part2
    local |dernière|, nombreDeDocuments, nomdutableur, laPlage
    tell application "System Events"
    tell disk item unFichier
    set dossierdetravail to path of container -- of disk item unFichier
    set nomdu_csvtemporaire to name -- of disk item unFichier
    end tell -- unFichier
    if nomdu_csvtemporaire does not end with ".csv" then set nomdu_csvtemporaire to nomdu_csvtemporaire & ".csv"
    set csv_temporaire to (dossier_temporaire & nomdu_csvtemporaire)
    if exists disk item csv_temporaire then delete disk item csv_temporaire
    make new file at end of folder dossier_temporaire with properties {name:nomdu_csvtemporaire}
    end tell -- System Events
    Read the entire file
    set utile to (read file unFichier)
    Check that it's matching our requirements. I'm not sure that the second test is always valid.
    if (utile contains "#=-=-=-=-=-=-=-=-=") and utile contains "#=-=-=-=-=-=-=-=-=End ./conf/ccia" then
    set cnt to offset of "#=-=-=-=-=-=-=-=-=" in utile
    Extract the second part which isn't formatted as the first one.
    set part2 to text cnt thru -1 of utile
    Extract the first part to decipher it.
    set utile to (text 1 thru (cnt - 1) of utile) as text
    Grabs the index of lower row
    set |dernière| to count of (paragraphs of utile)
    An ultimate test to be sure that the file is for us.
    if (|dernière| > 0) and text -13 thru -2 of (paragraph 6 of utile) is "NFitsAvg'd" then
    Normalize the datas according to the local settings
    if not ((utile contains delim) and utile contains deci) then
    if utile contains altDelim then set utile to my remplace(utile, altDelim, delim)
    if utile contains altDeci then set utile to my remplace(utile, altDeci, deci)
    end if
    Write the normalized beginning and the untouched part2 in a temporary csv file.
    write utile to file csv_temporaire
    write part2 to file csv_temporaire starting at eof
    Open the temporary csv in Numbers
    tell application "Numbers"
    set nombreDeDocuments to count of documents
    open csv_temporaire
    repeat while (count of documents) = nombreDeDocuments
    delay 0.2
    end repeat
    set nomdutableur to name of document 1
    tell document 1 to tell sheet 1 to tell table 1
    Insert a row at top to insert the required formulas.
    add row above first row
    Insert the formulas calculating the AVERAGEs and the STDEVs .
    repeat with c from 2 to 16 by 2
    set laPlage to (name of cell 8 of column c) & " : " & name of cell |dernière| of column c
    set value of cell 1 of column c to "=" & AVERAGE_loc & laPlage & ")"
    set value of cell 1 of column (c + 1) to "=" & STDEV_loc & laPlage & ")"
    end repeat -- with c
    Extract the calculated values to build a new row in the resume.
    set une_ligne to {nomdu_csvtemporaire}
    tell row 1
    repeat with c from 2 to 17
    copy (value of cell c) as text to end of une_ligne
    --copy (value of cell c) to end of une_ligne
    end repeat
    end tell -- row 1
    end tell -- document
    Save the new Numbers document.
    I don't know if it is useful but it's easy to remove or disable the instruction.
    save document 1 in (dossierdetravail & nomdutableur)
    close document 1 saving no (* So, if you disable the Save instruction, it will close quietly *)
    end tell -- Numbers
    Write the new row in the resume text file.
    write (my recolle(une_ligne, tab) & return) to file mon_Rapport starting at eof
    end if -- (|dernière| > 0) or
    end if -- read file unFichier…
    Delete the temporary csv file
    tell application "System Events" to delete file csv_temporaire
    end traiteunfichier
    --=====
    Creates a new iWork document from the Blank template and returns its name.
    example:
    set myNewDoc to my makeAnIworkDoc(theApp)
    on makeAnIworkDoc(theApp)
    local t, n
    if theApp is "Pages" then
    set commun to "iWork '" & my get_iWorkNum("Pages") & ":Pages.app:Contents:Resources:Templates:Blank.template:"
    try
    set t to ((path to applications folder as text) & commun) as alias
    on error
    set t to ("Western 2:Applications communes:iWork '" & commun) as alias
    end try
    else if theApp is "Numbers" then
    set commun to "iWork '" & my get_iWorkNum("Numbers") & ":Numbers.app:Contents:Resources:Templates:Blank.nmbtemplate:"
    try
    set t to ((path to applications folder as text) & commun) as alias
    on error
    set t to ("Western 2:Applications communes:" & commun) as alias
    end try
    else
    if my parleAnglais(theApp) then
    error "The application “" & a & "“ is not accepted !"
    else
    error "l’application « " & a & " » n’est pas gérée !"
    end if
    end if
    tell application theApp
    set n to count of documents
    open t
    repeat until (count of documents) > n
    delay 0.1
    end repeat
    set n to name of document 1
    end tell -- theApp
    return n
    end makeAnIworkDoc
    --=====
    on dateTimeStamp()
    return (do shell script "date +_%Y%m%d-%H%M%S")
    end dateTimeStamp
    --=====
    Set the parameter delimiters which must be used in Numbers formulas
    on getLocalized_Delimiters()
    if character 2 of (0.5 as text) is "." then
    return {",", ".", ";", ","}
    else
    return {";", ",", ",", "."}
    end if
    end getLocalized_Delimiters
    --=====
    on get_iWorkNum(a)
    local verNum
    tell application a to set verNum to item 1 of my decoupe(get version, ".")
    if (a is "Numbers" and verNum is "2") or (a is "Pages" and verNum is "4") then
    return "09"
    else
    return "11"
    end if
    end get_iWorkNum
    --=====
    Useful to get function's localized name if we need to build formulas
    examples:
    set OFFSET_loc to my getLocalizedFunctionName("Numbers", "OFFSET")
    set ADDRESS_loc to my getLocalizedFunctionName(theApp, "ADDRESS")
    set INDIRECT_loc to my getLocalizedFunctionName(theApp, "INDIRECT")
    on getLocalizedFunctionName(theApp, x)
    return my getLocalizedName(theApp, x, (path to application support as text) & "iWork '" & ¬
    my get_iWorkNum(theApp) & ":Frameworks:SFTabular.framework:Versions:A:Resources:")
    end getLocalizedFunctionName
    --=====
    on getLocalizedName(a, x, f)
    tell application a to return localized string x from table "Localizable" in bundle file f
    end getLocalizedName
    --=====
    on parleAnglais()
    local z
    try
    tell application "Numbers" to set z to localized string "Cancel"
    on error
    set z to "Cancel"
    end try
    return (z is not "Annuler")
    end parleAnglais
    --=====
    on decoupe(t, d)
    local TIDs, l
    set TIDs to AppleScript's text item delimiters
    set AppleScript's text item delimiters to d
    set l to text items of t
    set AppleScript's text item delimiters to TIDs
    return l
    end decoupe
    --=====
    on recolle(l, d)
    local TIDs, t
    set TIDs to AppleScript's text item delimiters
    set AppleScript's text item delimiters to d
    set t to l as text
    set AppleScript's text item delimiters to TIDs
    return t
    end recolle
    --=====
    replaces every occurences of d1 by d2 in the text t
    on remplace(t, d1, d2)
    local TIDs, l
    set TIDs to AppleScript's text item delimiters
    set AppleScript's text item delimiters to d1
    set l to text items of t
    set AppleScript's text item delimiters to d2
    set t to l as text
    set AppleScript's text item delimiters to TIDs
    return t
    end remplace
    --=====
    --[/SCRIPT]
    Yvan KOENIG (VALLAURIS, France) vendredi 11 juin 2010 19:01:46

  • SUDOKU (résolutio​n avec LV)

    Résolution des Sudoku avec LV.
    Ce VI utilise un algorithme de réflexion associé à un algorithme de backtraking. (100% home made)
    Il agit comme nous le ferions nous mêmes, par déductions, éliminations, recoupements
    et ... retour arrière en cas de "cul de sac".
    Les Sudoku "faciles" utilisent peu le backtraking. (pas du tout pour certains)
    Plus un Sudoku est difficile, plus il possède de solutions différentes.
    Celui que j'ai placé en "valeur par défaut d'entrée" est un exemple de Sudoku très difficile.
    Une horreur à résoudre, pour reprendre les termes de certains (je l'ai trouvé sur le Net)
    Ce Sudoku possèdent 2756 solutions différentes.
    Ce VI trouve la 1ere solution en 23 ms ... et les 2756 en un peu plus de 9 sec (Q6600 - 2.6Ghz)
    Possibilités:
    input - votre sudoku à résoudre.
    trouver une solution (la 1ere)
    trouver toutes les solutions.
    Faire pause (une fois que vous avez appuyé sur Pause, le petit bouton blanc permet de visualiser les solutions une par une)
    Le VI principal est : SUDOKU.vi
    Pour le tester rapidement ... lancer le vi et run
    1) start : il vous trouve la 1ere solution
    2) basculer l'interrupteur sur "all solutions" ... start ... il trouvera les 2756 solutions.
    voilou.
    Sur ce coup là ... me suis encore bien amusé
    Résolu !
    Accéder à la solution.
    Pièces jointes :
    main = SUDOKU.vi.zip ‏194 KB

    Il y a une règle pour interdire les groupes non anglophone?
    1) mon dieu ... que cela est bien difficle d'exprimer quelque chose ... de simple et de simplement dit.
    Je comprends que ceux qui travaillent sous LabVIEW tout ou partie de la journée aient envie de faire autre chose une fois chez eux.
    2) Je comprends parfaitement également, Il s'agissait d'un simple constat. (voir point 1)
    https://decibel.ni.com/content/docs/DOC-6108
    J'ai trouvé ceci sur le Net ... joli morceau de code ! très jolie cette solution récursive ...
    Mais ... mon algo va 5 fois plus vite. Résolution de la 1ere solution : 138ms contre 27ms.
    Cet algo récursif utilise également le backtraking, mais devant une impasse, il essaye "simplement" le nombre suivant.
    De mon côté, je calcule les possibilités pour chaque cases et à chaque instant,
    et quand je reviens en arrière, je ne passe pas "simplement" au nombre suivant ... mais au nombre suivant "possible" !

  • Rampe delta variable

    Bonjour,
    D’après ce que je sais, la sous-VI de LabVIEW qui nous génère un motif de rampe peut le faire à la base, soit avec un nombre d’échantillon, soit avec un delta.
    Donc, toujours, nous aurons une rampe qui tient ses éléments également espacés.
    Mon problème ce que je dois générer une rampe qui possède les deltas dedans l’écart, variables. Pour cela, j’ai le premier élément, le dernier ainsi que le nombre d’échantillons, et l’information du delta pour les premières valeurs et pour les dernières valeurs (le delta pour les valeurs au milieu de cet écart doit être plus au moins une moyenne des deltas de l’extrémité).
    Par exemple : Je sais que le première élément doit être 5, et le dernière 355. Les premiers éléments avec un delta de 5 et les dernières avec un delta de 10, au milieu, un delta moyen à peu près, (tout en sachant le nombre d’échantillon total).
    Donc, on aura :
    5, 10, 15, … 200, 207.5, 215, …. 335, 345, 355.
    Ce qui serait superbe, ce d’avoir une transition entre les des deltas continus (avec un incrément tout petit), comme cela :
    5, 10.4, 16, … 200, 207.5, 215.6, …. 333,8, 344,5, 355.
    N’hésitez pas à me faire des corrections, je suis tout débutant.. =)
    Je vous remercie pour toute l’attention.
    Cabral

    Bonjour Cabral,
    Hélas créer un delta modulable pour une rampe n'est pas du tout quelque chose d'immédiat. La meilleure solution serait de découper la rampe initiale et d'en faire des rampes continues par morceau dont le Delta est fixe sur chaque "segment".
    J'ai quand même été plus loin et propose ici une version polynomiale de la rampe. Le polynôme est d'ordre 2 ici mais on peut facilement reprendre le principe pour avoir un ordre plus élevé.
    On a les même paramètres de rampe (init, final, et step), plus la force du polynôme entre 0 et 1. Une valeur de 0.5 donne une rampe linéaire. Plus on s'éloigne de cette valeur, plus la différence à mi-chemin entre la rampe linéaire et le polynôme est élevée. Attention à ne pas dépasser les 0.2 et 0.8 car on n'a plus une monotonie du motif.
    Derrière, le calcul est marticielle/polynomiale donc ce n'est pas chose aisée, comme dit en début de poste.
    Cdt,
    Eric
    Eric M. - Application Engineering Specialist
    Certified LabVIEW Architect
    Certified LabWindows™/CVI Developer
    Pièces jointes :
    Progressive_Ramp.vi ‏21 KB

  • PB option d'enregistrement Signal Express

    Bonjour,
    j'essaye de faire avec Signal Express le type de travail suivant :
    + Enregistrer une tension pendant 5s, Calculer la moyenne des valeurs acquises, enregistrer ces valeurs dans un fichier.
    + Je souhaite faire cet enregistrement toutes les heures pendant 24h.
    Pour réaliser ces opérations je configure dans Signal Express les conditions de démarrage et d'arrêt de l'onglet "Option d'enregistrement". Mais quoi que je fasse l'enregistrement ne se fait qu'une seule fois...!!!!!!!
    Dans l'exemple de la pièce jointe, j'essaye de démarrer immédiatement l'enregistrement pendant 5s de ma tension, toutes les 30s et cela 3 fois. Mon paramétrage ne fonctionne pas, l'enregistrement ne se fait qu'une seule fois !!!
    Est-ce que ces fonctions de Signal Express fonctionnent réellement ?
    Si oui comment faire pour les utiliser correctement ?
    Merci d'avance pour vos réponses.
    Pièces jointes :
    Image_Signal_Express.JPG ‏205 KB

    Bonjour,
    J’ai fait le
    test sur mon ordinateur. L’acquisition et l’enregistrement fonctionnent très
    bien pendant  5 seconde toutes les 30seconde
    3 fois.
    Avez-vous bien
    spécifié la condition d’arrêt (durée 5s) ?
    Avez-vous bien
    coché les signaux que vous voulez enregistrer dans l’onglet Sélection des
    signaux ?
    Sur votre
    imprime écran, il est possible de voir un warning à coté de la tache de DAQmx,
    pouvez vous connaitre la raison de celui-ci ?
    Cordialement
    Samuel G.
    Samuel G. | Application Engineer Team Leader
    Certified LabVIEW Developer
    National Instruments France
    #adMrkt{text-align: center;font-size:11px; font-weight: bold;} #adMrkt a {text-decoration: none;} #adMrkt a:hover{font-size: 9px;} #adMrkt a span{display: none;} #adMrkt a:hover span{display: block;}
    Été de LabVIEW 2014
    12 présentations en ligne, du 30 juin au 18 juillet

  • Comment créer une discontinuité dans un graphe XY

    Bonjour,
    Est il possible de créer dans un graphe XY une trace discontinue ?
    Merci d'avance pour toute proposition.
    Résolu !
    Accéder à la solution.

    suite
    ci joint un exemple , il suffit d'utiliser les valeurs "Nan"
    Cdt
    Tinnitus
    CLAD / Labview 2011, Win Xp
    Mission d'une semaine- à plusieurs mois laissez moi un MP...
    RP et Midi-pyrénées .Km+++ si possibilité de télétravail
    Kudos always accepted / Les petits clicks jaunes sont toujours appréciés
    Don't forget to valid a good answer / pensez à valider une réponse correcte
    Pièces jointes :
    xy disc.vi ‏67 KB

  • Incrustation texte ou data sur une vidéo

    Bonjour à tous,
    Mon projet avance, mais je coince sur un petit problème !
    En partant d'une vidéo, je la décompose en image, puis pour chaque image, je trouve le centre d 'un objet. Suite à un calcul je trouve une valeur qui m'interesse par rapport à ma problèmatique. 
    J'aimerais incruster cette valeur (qui peut, je pense,  etre dans n'importe quel format !) sur toute la longueur de la vidéo, (et faire lire cette vidéo ensuite au ralenti...).
    Auriez vous une solution, j'ai beau chercher je ne vois pas trop comment faire ?
    merci pour votre aide
    PS : j'ai le module vision

    Avec quelles version de labview travailles-tu ?
    J'a créé une application pour mon laboratoire sur une machine de traction qui filme (*) des essais de compression et incruste sur les images (image par image) les valeurs de force et déformation ainsi que le graphique associé.
    (*) : Il ne s'agit pas d'un "film" à proprement parler. Je fais de l'acquisition image par image. Chaque image est sauvegardée sur un disque et le programme crée un tableau de clusters contenant les informations pour chaque image : 
    - nom/chemin du fichier
    - horodatage
    - Valeur de force
    - Valeur de déformation
    1ère photo : image sans infos
    2ème image : image avec infos.
    Si cela peut t'interesser.
    Pièces jointes :
    20.jpg ‏143 KB
    20.jpg ‏179 KB

Maybe you are looking for

  • When uploading photos from PC to iPhoto,

    hi, i am a new mac user, so am slowly finding my way. i am currently transferring photos from my PC over to iphoto. what I want to know is do i need to save the photo folder on hard drive if they are already uploaded into iPhoto? also, where does iph

  • PDF convert to doc or docx, does not!

    I thought I was on a winner, surely adobe could do it! Results are unusable, tested five files nothing to serious, a few pages, ANY adobe program CAN read them, the converter can't and does get "some" of the simplest text, layout is completely blown

  • How to import my plugins from Adobe Photoshop CC into Adobe Photoshop CC (2014)

    I thought the whole point of signing up to CC was that I would always have the tools I used and the upgrades would be incremental. Now I have a whole new programme - and my third-party plugins and filters are not available! Am I missing something, or

  • Issue in FM 'NUMBER_GET_NEXT'

    Hello, I am gettin a problem with the FM 'NUMBER_GET_NEXT'. In this bit of code;   CALL 'ThNoGet' ID 'BNRIV'    FIELD BNRIV                  ID 'NO'       FIELD G_NOIVBUFFER                  ID 'QUAN'     FIELD P_QUANTITY                  ID 'PERCENT

  • Ibooks 3 update doesn't work on iOS 5

    Hello, the Ibooks 3 update on my 1st gen Ipad doesn't work ! It always crashes. I'm on ios 5. Please help !!! Frédéric