کلیدستان

نسخه‌ی کامل: دستور if
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام وقتتون به خیر باشه دستوری برای if به صورت زیر نوشتم

کد پی‌اچ‌پی:
Ci=2.75e-10;
       
Vd=0.9dia=1.5e-9VT=0.29
       Vg
=0:0.1:0.9
       
if (Vg<VT)
           
delta_phib=0;
       else
           
alfa=-1*(0.55*exp(-20*Vd)+(0.02*dia-0.046)*Ci*1e11+0.298)
           
delta_phib=alfa*(Vg-VT)
       
end 

ولی هنگام اجرا خط اول را اجرا نمی کند و به ازای تمامی مقادیر Vg رابطه دوم را اجرا می کند و آنرا مقدار دهی میکند!

کد پی‌اچ‌پی:
Vg =

         
0    0.1000    0.2000    0.3000    0.4000    0.5000    0.6000    0.7000    0.8000    0.9000


alfa 
=

    
0.9670


delta_phib 
=

   -
0.2800   -0.1833   -0.0866    0.0101    0.1068    0.2035    0.3002    0.3969    0.4936    0.5903 

آیا نوع نوشتن دستور if را اشتباه نوشتم؟ اگر نه چرا این مشکل دارد؟
برای رفع آن چه باید کرد؟؟

با تشکر
سلام.
شیوه کدنویسی غلط است و باعث می شود که روندی غیر از آنچه شما انتظار دارید، اجرا شود.
من چند نکته را تذکر می دهم و بعد کد صحیح را به شما نشان خواهم داد.
شما ابتدا باید delta_phib را با دستور zeros به صورت برداری شامل عناصر صفر، تعریف کنید (با طولی برابر طول Vg).
چون Vg یک بردار است، ولی VT تنها یک عدد است، بنابراین باید از حلقه for استفاده کنید و سپس برای  Vg  که بردار است، در هر گام حلقه، تنها به یک عنصر آن ارجاع بدهید (زیرا در غیر این صورت، ممکن است که عملیات مورد نظر، بر روی همه عناصر آن اجرا گردد). 

کد متلب صحیح :

کد:
clear all
close all
clc

Ci=2.75e-10;
Vd=0.9; dia=1.5e-9; VT=0.29
Vg=0:0.1:0.9
Vg_length=length(Vg);
delta_phib=zeros(1,Vg_length);
for nn=1:Vg_length
      if (Vg(nn)<VT)
          delta_phib(nn)=0;
      else
          alfa=-1*(0.55*exp(-20*Vd)+(0.02*dia-0.046)*Ci*1e11+0.298);
          delta_phib(nn)=alfa*(Vg(nn)-VT);
      end
end
delta_phib

نتیجه اجرای کد متلب بالا :

کد:
VT =

    0.2900


Vg =

  Columns 1 through 9

         0    0.1000    0.2000    0.3000    0.4000    0.5000    0.6000    0.7000    0.8000

  Column 10

    0.9000


delta_phib =

  Columns 1 through 9

         0         0         0    0.0097    0.1064    0.2031    0.2998    0.3965    0.4932

  Column 10

    0.5899
از شما بابت وقتی که می گذارید متشکرم