What is the modification needed in the below code
    3 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Amy Topaz
 el 17 de Mzo. de 2022
  
    
    
    
    
    Comentada: Rena Berman
    
 el 8 de Abr. de 2022
            Are the below code same? I am getting different results. 
%First
scale0 = 1500;
Nai = linspace(1e13,1e19,scale0);   %𝑁𝑎:1×1013−1×1019𝑐m−3
Ndi = linspace(1e13,1e19,scale0);   %𝑁𝑑:1×1013−1×1019𝑐m−3
Na = ones(scale0,1)*Nai;
Nd = Ndi.'*ones(1,scale0);
y = 0;
z = 0;
%Computing Fermi Energy Level
Ef = ones(scale0,1)*0;
while y < 1500
    y = y + 1;
    while z < 1500
        z = z + 1;
        eq1 = @(Ef) ((Nc)*exp(-(Ec-Ef)/(kbT))) + ((Na(y,z))/(1 + 4*exp(-(Ef-Ea)/(kbT)))) - ((Nv)*exp(-(Ef-Ev)/(kbT)) + ((Nd(y,z))/(1 + 2*exp(-(Ed-Ef)/(kbT)))));
        x1 = [0 10];
        Ef(y,z) = fzero(eq1,x1);
    end
end
%Second
scale0 = 1500;
Nai = linspace(1e13,1e19,scale0);   %𝑁𝑎:1×1013−1×1019𝑐m−3
Ndi = linspace(1e13,1e19,scale0);   %𝑁𝑑:1×1013−1×1019𝑐m−3
Na = ones(scale0,1)*Nai;
Nd = Ndi.'*ones(1,scale0);
%Computing Fermi Energy Level
Ef = ones(scale0,1)*0;
for y=1:prod(size(Nai))
    for z=1:prod(size(Ndi))
        eq1 = @(Ef) ((Nc)*exp(-(Ec-Ef)/(kbT))) + ((Na(y,z))/(1 + 4*exp(-(Ef-Ea)/(kbT)))) - ((Nv)*exp(-(Ef-Ev)/(kbT)) + ((Nd(y,z))/(1 + 2*exp(-(Ed-Ef)/(kbT)))));
        x1 = [0 10];
        Ef(y,z) = fzero(eq1,x1);
    end
end
1 comentario
Respuesta aceptada
  Walter Roberson
      
      
 el 17 de Mzo. de 2022
        Look at the first set of code. You initialize z = 0 outside both loops. In the inner loop you add 1 to each z, ending when z >= 1500. Now consider the second iteration of the while y loop, when y increments from 1 to 2. z is still 1500 from the previous while z<1500 loop, because you never reset z to 0. So for the rest of the y iterations, you do no z work.
Side note:
prod(size(Nai))
can be written more efficiently as
numel(Nai)
3 comentarios
Más respuestas (0)
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!