MATLAB: moyen fiable de compter les exécutions d’un programme

Existe-t-il un moyen « simple » et fiable de compter combien de fois un programme est exécuté (disons sous licence à un client pour 100 exécutions)? Je pense que simplement enregistrer / charger un fichier .mat avec une variable serait simple, mais il semble que ce ne soit pas si simple! Droite?
Merci.
Doug

Meilleure réponse

  • Vous ne pouvez pas le faire de manière fiable en utilisant des fichiers locaux. Par exemple. Windows peut restaurer la version précédente d’un fichier très facilement ou vous pouvez exécuter le programme sur une machine virtuelle et restaurer à nouveau le dernier instantané.
    Le seul moyen fiable est de contrôler cela à distance: vous avez besoin d’un serveur pour le comptage. La communication doit être cryptée, car l’utilisateur pourrait copier les paquets Internet et l’injecter dans la communication.
    Vous pouvez utiliser une période de temps limitée. Ensuite, ne vérifiez pas l’heure actuelle en utilisant l’horloge, car il peut facilement être surchargé. L’heure système de la carte principale est également triviale à changer. Demander un service Internet pour l’heure actuelle, par ex. un serveur NTP, n’est pas crypté et peut également être truqué, mais vous avez besoin d’énergie criminelle pour ce faire. J’ai entendu dire que les utilisateurs modifient temporairement l’heure du système pour utiliser également un programme avec une licence expirée, alors vous pouvez rechercher le fichier le plus récent dans les dossiers TEMP ou la dernière mise à jour de Windows pour trouver une heure fiable.
    La limitation la plus fiable est un contrat signé à la main. Le client a tendance à être digne de confiance, s’il vous l’a dit explicitement et personnellement, qu’il le fera.
  • MATLAB: Aide avec la fonction unique

    La fonction unique ne parvient pas à trier la redondance suivante;
    K>> b
    b = [15,0000 15,0000 15,0000 -5,0000 15,0000]
    K>> unique(b)
    ans = -5,0000 15,0000 15,0000 15,0000 15,0000
    mais lorsque le vecteur est composé d’entiers:
    a = [15 15 15 15 -5 15]
    K>> unique(ans)
    ans = -5 15
    Comment puis-je résoudre ce problème?

    Meilleure réponse

  • Si vous regardez la sortie de
     
    b - 15
     
    Vous verrez que certains (ou tous) ces 15.0000 ne sont pas réellement 15.0000 mais quelque chose de très proche mais différent les uns des autres.
    La solution: utiliser uniquetol:
     

    uniquetol(b); %you can specify the tolerance as well.

     

  • MATLAB: étrange approximation lors de la création de vecteurs!

    Bonjour,
    J’utilise Matlab depuis quelques années maintenant et j’ai découvert avec surprise un étrange comportement Matlab:
    0: 0,2: 10 fournit un tableau de nombres parfois approximatifs, ce qui est plutôt mauvais pour les tests…
    Voici le résultat de la commande:
    >> 0:0.2:10
    ans = Colonnes 1 à 4
     
    0 0.200000000000000 0.400000000000000 0.600000000000000
    Columns 5 through 8
    0.800000000000000 1.000000000000000 1.200000000000000 1.400000000000000
    Columns 9 through 12
    1.600000000000000 1.800000000000000 2.000000000000000 2.200000000000000
    Columns 13 through 16
    2.400000000000000 2.600000000000000 2.800000000000000 3.000000000000000
    Columns 17 through 20
    3.200000000000000 3.400000000000000 3.600000000000000 3.800000000000000
    Columns 21 through 24
    4.000000000000000 4.200000000000000 4.400000000000000 4.600000000000001
    Columns 25 through 28
    4.800000000000001 5.000000000000000 5.199999999999999 5.399999999999999
    Columns 29 through 32
    5.600000000000000 5.800000000000000 6.000000000000000 6.199999999999999
    Columns 33 through 36
    6.400000000000000 6.600000000000000 6.800000000000000 7.000000000000000
    Columns 37 through 40
    7.199999999999999 7.400000000000000 7.600000000000000 7.800000000000000
    Columns 41 through 44
    8.000000000000000 8.199999999999999 8.400000000000000 8.600000000000000
    Columns 45 through 48
    8.800000000000001 9.000000000000000 9.199999999999999 9.400000000000000
    Columns 49 through 51
    9.600000000000000 9.800000000000001 10.000000000000000
     
    Comme vous pouvez le voir, les versions 4.6, 5.2, 5.4, 6.2, 7.2, 8.2, 8.8 et 9.1 sont approximatives!
    Est-ce normal? Existe-t-il une solution de contournement ???
    Merci pour votre temps,
    Cordialement,
    Robin

    Meilleure réponse

  • C’est normal. Il s’agit de calculs et d’approximations en virgule flottante. Voir: Pourquoi 0,3 – 0,2 – 0,1 (ou similaire) n’est pas égal à zéro?(lien) pour plus de détails.
    La seule solution que je peux imaginer est de rondleur:
     
    V1 = 0:0.2:10;
    V2 = round(V1,1);
    Test = V1-V2;
     
    Les versions les plus récentes de rondpermet d’arrondir à un nombre spécifique de décimales. Si vous ne l’avez pas, cette fonction anonyme fera la même chose (avec la même précision):
     

    roundn = @(x,n) round(x .* 10.^n)./10.^n; % Round ‘x’ To ‘n’ Digits, Emulates Latest ‘round’ Function

     

  • MATLAB: Modification de l’emplacement de num2str

    Bonjour, j’utilise ce qui suit pour illustrer l’index de l’emplacement (x, y) à l’intérieur d’un polygone. text (x (i), y (i), num2str (i) Avec le code ci-dessus, j’obtiens les chiffres exactement au point (x, y). Quelqu’un sait-il comment changer cet emplacement?

    Meilleure réponse

  • Ajoutez un décalage à l’emplacement x (et / ou y):
     

    d = 0.01;
    text(x(i)+d,y(i),num2str(i))

     

  • MATLAB: comment lire dans des cellules spécifiques contenant des noms de fichiers se terminant par «Pressure.mat»

    J’ai une liste de 490 fichiers dans une matrice, je veux seulement lire les fichiers qui se terminent par ‘Pressure.mat’, si cela ne se termine pas par cela, je ne veux pas le lire. Quelle fonction puis-je utiliser pour ce faire? Même la création d’une nouvelle matrice qui ne contient que ces cellules spécifiques contenant les fichiers serait ce dont j’ai besoin.

    Meilleure réponse

  • Vous pouvez exécuter une boucle et utiliser strfind. Recherchez Pressure.mat dans la chaîne, si la sortie n’est pas vide, vous devez lire le fichier.
  • MATLAB: comment transformer cette poignée en chaîne

    Mon code est:
     
    function x = find_zero( f,x1,x2 )
    %FIND_ZERO Summary of this function goes here
    % Detailed explanation goes here
    Y=fnzeros(f,[x1,x2]);
    end
     
    La question est ci-dessous:
     
    %
     

    Meilleure réponse

  • Tu n’as pas besoin de « Débarrassez-vous du symbole ‘@' ». Ce symbole crée un poignée de fonction. Une poignée de fonction est beaucoup plus utile pour vous que tout ce que vous pourriez faire avec des cordes. En fait, jouer avec la chaîne serait une façon horrible d’écrire ce code. Avec une poignée de fonction, vous pouvez simplement l’appeler comme vous le feriez pour n’importe quelle autre fonction.
    Jetez un œil à ceci:
     

    >> myfun = @(fun,x) fun(x); % define an anonymous function
    >> myfun(@sin,pi/2)
    ans = 1
    >> myfun(@cos,pi/2)
    ans = 0
    >> myfun(@(n)n+1,pi/2)
    ans = 2.5708

     

  • MATLAB: ネ ッ ト ワ ー ク ラ イ セ ン ス へ の 変 更

    今あるライセンスをネットワークライセンスに変更することは出来るでしょうか。 また、その場合費用はどのくらいかかるでしょうか。

    Meilleure réponse

  • Licence concurrente réseau へ の 変 更 は 可能 で す が 、 追加 費用 は 発 生 す る と 思 わ れ ま す の で 、 MathWorks 担当 営 業 へ お 問 い 合 わ せ い た だ き ま す よ う お お す す す す
  • MATLAB: Dans la matrice d’entrée, les deux premiers bruts sont échangés avec une autre matrice qui est 2 * 3 remplacer les deux premiers bruts entiers par celui

     
    entry matrix
    1.00 4.00 4.00
    3.00 0 6.00
    5.00 3.00 1.00
    5.00 0 4.00
    0 3.00 6.00
    2.00 1.00 6.00
     
    une autre matrice C
     
    1 0 9
    4 6 9
     
    maintenant les deux premières lignes de la matrice d’entrée sont supprimées avec la matrice d’entrée c est maintenant vue comme ceci
     
    1 0 9
    4 6 9
    5 3 1
    5 0 4
    0 3 6
    2 1 6
     

    Meilleure réponse

  •  

    em = [1.00 4.00 4.00
    3.00 0 6.00
    5.00 3.00 1.00
    5.00 0 4.00
    0 3.00 6.00
    2.00 1.00 6.00] ;
    c = [1 0 9
    4 6 9] ;
    iwant = em ;
    iwant(1:2,:) = c(1:2,:) ;

     

  • MATLAB: Dois-je désinstaller MATLAB?

    Dois-je désinstaller l’édition pour étudiants MATLAB que j’ai après avoir obtenu mon diplôme ?? Puisqu’il m’a demandé quand je vais terminer mes études quand je l’ai installé pour la première fois. Le CD et la licence étaient fournis avec un manuel de l’un des cours.

    Meilleure réponse

  • Non, vous n’avez pas besoin de désinstaller lorsque vous êtes diplômé.
    Cependant, la licence Student Version ne peut être utilisée que lorsque vous êtes inscrit dans un établissement décernant des diplômes. Ainsi, bien que vous n’ayez pas à désinstaller MATLAB, vous devez cesser de l’utiliser. Mais si vous retourniez à l’université quelque temps, vous pourriez recommencer à l’utiliser.
  • MATLAB: Pourquoi est-ce que j’obtiens cette erreur « Les indices d’indice doivent être de vrais entiers positifs ou logiques. »

    salut j’ai un vecteur appelé pts1 et je veux obtenir la taille de ce vecteur en utilisant la commande « size (pts1,2) » mais j’obtiens une erreur dans matlab « Les indices d’indice doivent être de vrais entiers positifs ou logiques. » comment puis-je le réparer? THX

    Meilleure réponse

  • Êtes-vous sûr que c’est exactement le code qui vous donne l’erreur. Je ne vois pas comment ce code exact pourrait éventuellement donner cette erreur, en supposant que vous avez tapé littéralement le 2 plutôt que de l’acquérir à la suite d’un processus.
    La seule autre chose qui vous vient à l’esprit est que vous avez remplacé la fonction taille par une variable.
    Qu’est-ce que
     

    which size