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: Alors que la boucle ne se termine pas même si l’expression est 0

    Salut, je suis complètement perplexe quant à la raison pour laquelle la boucle while suivante ne se terminera pas. Toute aide serait appréciée.
     
    CO2percentout1 = 1:1000;
    CO2percentout1(:)=0;
    CO2percentout1(1) = CO2_percent_feed-.6*CO2_percent_feed;
    CO2percentout2 = CO2_percent_feed-.5*CO2_percent_feed;
    CO2percentout3 = CO2_percent_feed-.3*CO2_percent_feed;
    i=2;
    c1 = 1:49;
    c2 = 1:49;
    c3 = 1:49;
    while abs(CO2percentout1(i) - CO2percentout1(i-1)) > 0.001
    [CO2percentout1(i),Algae_in_2,c1] = stage1(CO2percentout2,V1,tot_gas_flow,Height1,C01,Water_flow);
    [CO2percentout2,Algae_in_3,c2]=stage2(CO2percentout3,V2,tot_gas_flow, Height2, C02,Water_flow,Algae_in_2);
    [CO2percentout3,Algae_Product,c3] =stage3(CO2_percent_feed,V3,tot_gas_flow,Height3,C03,Water_flow,Algae_in_3);
    i=i+1;
    end;
     
    les valeurs de CO2percentout1 pour 30 itérations sont les suivantes:
     
    0.400000000000000 0.496842690178588 0.577390642895070 0.658829848072415 0.658142131647976 0.658142519746066 0.658142563142344 0.658142562747119 0.658142562747534 0.658142562747550 0.658142562747550 0.658142562747550 0.658142562747550 0.658142562747550 0.658142562747550 0.658142562747550 0.658142562747550 0.658142562747550 0.658142562747550 0.658142562747550 0.658142562747550 0.658142562747550 0.658142562747550 0.658142562747550 0.658142562747550 0.658142562747550 0.658142562747550 0.658142562747550 0.658142562747550 0.658142562747550
     

    Meilleure réponse

  • I think what you need to do is the following (by the way, I don’t know what your code is doing but I think it should be > 0.001 not <):
     

    i = 1;
    CO2percentout1(i) = 0; %or whatever starting value here
    difference = 1; %just an arbitrary value above 0.001
    while difference > 0.001
    i = i + 1;
    [CO2percentout1(i),Algae_in_2,c1] = stage1(CO2percentout2,V1,tot_gas_flow,Height1,C01,Water_flow);
    [CO2percentout2,Algae_in_3,c2]=stage2(CO2percentout3,V2,tot_gas_flow, Height2, C02,Water_flow,Algae_in_2);
    [CO2percentout3,Algae_Product,c3] =stage3(CO2_percent_feed,V3,tot_gas_flow,Height3,C03,Water_flow,Algae_in_3);
    difference = abs(CO2percentout1(i) - CO2percentout1(i-1));
    end

     

  • MATLAB: Quel est le problème avec la deuxième boucle ‘IF’? Le programme se termine après être entré dans la boucle.

    Je peux entrer dans le deuxième « IF » mais le programme simulink se termine après l’exécution des lignes dans la deuxième condition « IF ». Simulink s’exécute pendant le temps requis sans la deuxième condition « IF ».
     

    function [Out] = LMAImplementation_Motor(In)
    persistent eWithNoChange eWithDeltaL eWithDeltaK
    e = In(1);
    L = In(2);
    K = In(3);
    Clock = In(4);
    if (0.0000 <= Clock) && (Clock <= 0.9999)
    deltaK = 0; deltaL = 0;
    eWithNoChange(end+1) = e;
    [m,n] = size(eWithNoChange);
    end
    if n == 30001 %THIS LINE WAS BOLD
    eWithNoChange(:,1) = [];
    sizeofeWithNoChange = size(eWithNoChange)
    end
    if (1.0000 <= Clock) && (Clock <= 1.9999)
    deltaL = L*0.1; deltaK = 0;
    eWithDeltaL(end+1) = e;
    end
    Out = [deltaL,deltaK,Clock];

     

    MATLAB: lecture dans les données du tableau 1-D à l’erreur Simulink

    Salut à tous,
    Essayer de lire l’altitude, la latitude et la longitude ainsi que les données d’attitude des avions dans mon modèle Simulink et les envoyer à FlightGear afin de visualiser le comportement des avions. Je ne sais pas quels blocs utiliser, mais je rencontre l’erreur suivante:
    et
    Comme vous pouvez le voir, le tableau de données que j’envoie est un 1×9945tableau de lignes, cependant les éléments individuels sont requis dans lesquels doivent être synchronisés et envoyés au bloc d’animation FlightGear6doF. Apprécié si quelqu’un pouvait donner un pointeur sur la façon de le faire correctement.
    Rgds

    Meilleure réponse

  • Merci à tous ceux qui ont pris le temps de regarder la question et y ont répondu. Cette question est maintenant résolue. Veuillez consulter la section des commentaires ci-dessus.
  • MATLAB: comment déterminer le nombre de données dans un fichier CSV «salissant», puis l’importer

    J’ai un fichier CSV qui ressemble à ceci:
     
    "","JOHN DOE","p0123TP01, Approved"
    "","Rectum (4)(Volume: 57.77)","CTV (21)(Volume: 32.39)"
    "0.0","100.0","100.0"
    "0.1","78.01999","100.0"
    "0.2","76.2245","100.0"
    "0.3","75.21035","100.0"
    [skipping to the end of the file]
    "58.1","","1.88277"
    "58.2","","0.21338"
    "58.3","","0.0"
     
    mais le nombre d’ensembles de données peut varier, je dois donc écrire un script flexible pour tenir compte du nombre de lignes et de colonnes de données:
     
    "","DOE, JOHN","revised blurring for Case 16, ANON, original; calculating correlation between blurred dose and toxicity","","","","","","","","","","","","","",""
    "","patient (1)(Volume: 18578.06)","Prostate (2)(Volume: 19.80)","Proximal-SV (3)(Volume: 6.40)","Rectum (4)(Volume: 70.44)","Bladder (5)(Volume: 143.70)","Intestine (6)(Volume: 8.40)","CutLine (7)(Volume: 415.77)","Air (8)(Volume: 5.06)","InsideRectum (9)(Volume: 36.17)","PTV1 (10)(Volume: 76.77)","PTVoriginal (11)(Volume: 80.89)","PTV2 (12)(Volume: 56.52)","Guide1 (13)(Volume: 81.79)","Guide2 (14)(Volume: 68.50)","guide (15)(Volume: 66.91)","CTV-operator (16)(Volume: 26.15)"
    "0.0","100.0","100.0","100.0","100.0","100.0","100.0","100.0","100.0","100.0","100.0","100.0","100.0","100.0","100.0","100.0","100.0"
    "0.1","12.88921","100.0","100.0","69.70608","73.36377","2.54878","82.87909","16.40558","73.91824","100.0","100.0","100.0","100.0","100.0","100.0","100.0"
    "0.2","12.06455","100.0","100.0","67.50839","69.03589","0.88936","79.92729","16.40558","71.92567","100.0","100.0","100.0","100.0","100.0","100.0","100.0"
    "0.3","11.56745","100.0","100.0","65.82671","67.72518","0.32793","77.7594","16.40558","70.44129","100.0","100.0","100.0","100.0","100.0","100.0","100.0"
    "0.4","11.09599","100.0","100.0","64.40629","66.56731","0.15624","75.78776","16.40558","69.10236","100.0","100.0","100.0","100.0","100.0","100.0","100.0"
    "0.5","10.1524","100.0","100.0","63.25727","65.87648","0.07211","73.65644","16.40558","68.12462","100.0","100.0","100.0","100.0","100.0","100.0","100.0"
    "0.6","9.48733","100.0","100.0","61.64318","64.92351","0.0103","67.57963","16.40558","65.96868","100.0","100.0","100.0","100.0","100.0","100.0","100.0"
    "0.7","9.1257","100.0","100.0","60.35885","62.43443","0.0","59.25954","16.40558","65.12147","100.0","100.0","100.0","100.0","100.0","100.0","100.0"
    [... skipping to end of file ...]
    "58.1","0.00498","4.57181","0.23601","","","","","","","1.20431","1.143","1.63577","1.13037","1.34968","1.38174","3.51704"
    "58.2","4.9E-4","0.46111","0.0","","","","","","","0.1189","0.11285","0.1615","0.1116","0.13326","0.13642","0.34903"
    "58.3","0.0","0.0","","","","","","","","0.0","0.0","0.0","0.0","0.0","0.0","0.0"
     
    De quel format texts.Spec ai-je besoin pour stocker ces données? Le code suivant génère un tableau de cellules 1 × 1 avec l’élément 0x2 double vide:
     
    function [StudyIDcol,DistributionType,OrganSpecification,Doses,Volumes,DoseUnit,VolumeUnit] = CreateTableVariables(folderpath,type,StudyID)
    % First we read the file. Code courtesy of Walter Roberson of the MathWorks community
    fid = fopen([folderpath,type,'/',StudyID,'.csv'],'rt'); % rt = 'read in text mode'
    if fid == -1 % added for debugging at the suggestion of Jan Hansen of the MathWorks community
    error('Author:Function:OpenFile', 'Cannot open file');
    end
    num = 0;
    % headers = cell % unfinished
    while true %endless loop requiring 'break' command to exit!
    H1 = fgetl(fid) ;
    if feof(fid); break; end
    H2 = fgetl(fid) ;
    if feof(fid); break; end
    datacell = textscan(fid, '%f%f', 'Delimiter', ',', 'CollectOutput', true) ; % originally '%f%f'
    if isempty(datacell) || isempty(datacell{1}); break; end
    % if any(isnan(datacell{1}(end,:))); datacell{1}(end,:) = []; end % commented out to verify the above command quits the loop
    num = num + 1;
    headers(num,:) = {H1, H2} ;
    data(num) = datacell; % We store it to the data cell array only after checking that it contains data.
    %fgetl(fid); %the empty line between organs
    end
    fclose(fid);
     
    je suis en train de lire le format textescan Documentation spécifiqueet plus essayant de résoudre ce problème. Veuillez m’aider à comprendre comment utiliser TextScan.
    J’essaie maintenant d’écrire un script pour importer de tels fichiers de manière flexible; Je dois apprendre à le scanner pour compter le nombre de lignes et de colonnes pour les données commençant à « 0.0 », « 100.0 », « 100.0 » (pas nécessairement ce nombre à chaque fois)…
     
    %function data = ReadMIMDVH(filepath)
    filepath = '/home/sony/Documents/research/data/MIM Cumulative DVH/planned/1.csv';
    % We write a script specifically to import MIM data.
    % First we scan the file to see how many rows of data it has.
    % We construct the format spec based on this number of rows and columns.
    formatSpec = ['%*s %*s %*s %*s %q %q',repmat('%f',[rows,columns])];
    % We read the file using textscan.
    fileID = fopen(filepath);
    DVH = textscan(fileID,formatSpec,'Delimiter',{',' '/n'});
    %end
     

    Meilleure réponse

  • J’utiliserais table de lecturequi devrait être capable de travailler seul sur les formatspec. Alors juste:
     

    t = readtable(filepath); %all done file is read and parsed.

     

  • MATLAB: le résultat de la formule ne renverra pas un vecteur comme prévu

    Bonjour,
    Dans un simple exercice à domicile, nous avons reçu une formule qui doit être exécutée dans deux scénarios différents.
    1. Dans le premier scénario, notre L est un vecteur.
     
    R = 22;
    L = [100:20:300]
    N=1;
    X = (L*N)/(R+N)
     
    X renvoie un vecteur avec les nombres corrects.
    2. Dans le deuxième scénario, je devais créer N comme vecteur avec la commande N = [1: 3: 45].
     
    R=22
    L = 300
    N = [1:3:45]
    X = (L*N)/(R+N)
     
    Maintenant, X ne renvoie qu’une seule valeur, 161,9772, dont je ne sais même pas d’où il vient. Alors, veuillez me conseiller ce qui ne va pas avec mon code.

    Meilleure réponse

  •  

    X = (L*N) ./ (R+N)

     

  • MATLAB: Comment démarrer matlab sur Windows

    J’ai acheté la licence de la version étudiante et l’ai déjà payée. Donc, chaque fois que j’ai démarré matlab R2016a, il m’a juste demandé d’activer la licence. Après avoir activé avec succès la fenêtre disparaît, mais la prochaine fois que vous lancez matlab, elle veut être réactivée…
    Merci de m’avoir aidé!

    Meilleure réponse

  • Vous devez exécuter en tant qu’administrateur une fois afin qu’il puisse écrire correctement le fichier de licence.
  • MATLAB: Comment puis-je créer une série de vecteurs de même longueur, extraire de chacun le nombre maximum et collecter les nombres maximum dans un nouveau vecteur

     
    if true
    b=5;
    muH=b*sqrt(pi/2);
    n=100000; % n different vectors
    H= rand(1,1000);
    h=(muH/mean(H))* H; %vector
    max=zeros(1,n);
    for k=1:n %it creates n different vectors each containing 1000 numbers
    max=max(h(k)); %extract maximum from each n vectors
    end
    end
     

    Meilleure réponse

  •  

    clc; clear all ;
    b=5;
    muH=b*sqrt(pi/2);
    n=100000; % n different vectors
    iwant=zeros(1,n);
    for k=1:n %it creates n different vectors each containing 1000 numbers
    H= rand(1,1000);
    h=(muH/mean(H))* H; %vector
    iwant(k)=max(h); %extract maximum from each n vectors
    end

     

  • MATLAB: La deuxième fonction s ne s’exécute qu’à la première étape dans plusieurs cas de fonctions S

    J’utilise un modèle simulink avec 2 fonctions S (plus à l’avenir), alors qu’il ne peut pas donner un résultat correct. Lors de l’utilisation de printf dans mes codes, j’ai constaté que la deuxième fonction s ne s’exécute qu’à la première étape, bien que la première fonction s s’exécute en continu à chaque étape. Ce qui me rend confus, c’est que lorsque vous exécutez les deux fonctions S séparément, en utilisant indirectement l’espace de travail pour la transmission de données, cela fonctionne. Ainsi, je pense qu’il devrait y avoir quelques astuces pour exécuter un modèle où la fonction s coopère les unes avec les autres. Quelqu’un pourrait-il me donner quelques indices à ce sujet?
    Dans la pièce jointe est mon modèle avec les deux codes C.
    Mon problème est que mon modèle simulink ne peut prendre en charge qu’une seule fonction s fonctionnant en continu avec un pas fixe (0,001 s). Lors de la connexion de la fonction s à une autre, la deuxième fonction s s’exécute uniquement à la première étape.
    Merci pour votre lecture

    Meilleure réponse

  • Maintenant, j’ai résolu ce problème. Prenez soin du paramètre de temps d’échantillonnage lorsque vous connectez les blocs de fonction s séparés!
     

    if true
    ssSetNumSampleTimes(S, 1);
    end