MATLAB: extraire des données d’une boucle

Salut les gars,
Tout organisme peut-il aider à extraire et à tracer des données à partir de cela?
 
clc
clear
close all
format long
mu0=4*pi*10^-7;
R=0.9;
N=17;
I=12.5;
for z=-1.5:0.01:1.5;
B1=((mu0*N*I*R^2)/2)*(1/(R^2+(z+(R/2))^2)^(3/2));
B2=((mu0*N*I*R^2)/2)*(1/(R^2+(z-(R/2))^2)^(3/2));
Bt=B1+B2;
figure(1)
plot(z,B1); hold on;grid on
plot(z,B2); hold on;grid on
plot(z,Bt); hold on;grid on
end
 

Meilleure réponse

  • Salut Oday,
    Je comprends que tu es trouver des difficultés àen gardant chaque valeur des variables générées dans la boucle enregistrée. Aditionellement,le tracé généré par votre code est vide et n’affiche pas les tracés.
    Les données créées dans une boucle peuvent être extraites en les enregistrant dans un tableau. L’ensemble des données peut ensuite être tracéà partir du tableau lui-même, plutôt que de le tracer point par point dans la boucle. Til attendez commander peut être utiliséune fois avant ajouter toutes les parcelles. Puis le tenir bon commander Devrait être utilisé.
    Le code ci-dessous peut vous aider.
     

    clc
    clear
    close all
    format long
    mu0=4*pi*10^-7;
    R=0.9;
    N=17;
    I=12.5;
    z2 = -1.5:0.01:1.5;
    elm = length(z2);
    B1arr = zeros(1, elm); % creating array to add B1 to in the loop
    B2arr = zeros(1, elm); % creating array to add B2 to in the loop
    Btarr = zeros(1, elm); % creating array to add Bt to in the loop
    i=1;
    for z=-1.5:0.01:1.5
    B1=((mu0*N*I*R^2)/2)*(1/(R^2+(z+(R/2))^2)^(3/2));
    B2=((mu0*N*I*R^2)/2)*(1/(R^2+(z-(R/2))^2)^(3/2));
    Bt=B1+B2;
    B1arr(1,i ) = B1; % adding B1 to array
    B2arr(1,i ) = B2; % adding B2 to array
    Btarr(1,i ) = Bt; % adding Bt to array
    i=i+1;
    end
    hold on
    plot(z2, B1arr, 'b')
    plot(z2, B2arr, 'r')
    plot(z2, Btarr, 'g')
    hold off