کلیدستان

نسخه‌ی کامل: ایراد کد نویسی، خطا در رسم contourf
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
با سلام 
یه کد نوشتم که در اون با دو حلقه for مقدار الفا و لاندا رو از 1 تا 8 تغییر می دادم و بعد با استفاده از meshgrid شبکه بندی می کردم و بعد با contourf منحنی ها رو رسم می کردم! اما برای دقیق تر بررسی کردن کار لازم بود الفا رو در محدوده 3 تا 5 و لاندا رو در محدوده 6 تا 7 در حلقه های for بررسی کنم. اما  ارور meshgrid  میده که طول بردار z با x,y یکی نیس! ضمنا نمی دونم چرا میاد تمام مقادیر مربوط به الفا کمتر از 3 و لاندا کمتر از 7 رو هم در ماتریس 0 میذاره! (من اصن نمیخوام این بخشو محاسبه کنه اینم محاسبه نمیکنه فقط مقدار 0 میذاره که باعث ارور مربوط به طول بردار می شه!) کدم به صورت زیره:
clc%calculate switching probability and plot K
clear all;
close all;
Nr=100;%intial value
sigma=Nr;
mu=0;
D=normrnd(mu,sigma,1)%generate random numbers in normal distribution
b=0;
c=0;
q=0;
g=0;
z=0;
s=0;
for alfa=3:5
    for landa=6:7

        if D<-landa%dar vaziyat foroosh
            syms x
            f=normpdf(x,0,1)
            b=int(f,-Inf,-landa)
      
            elseif D>landa%dar vaziyat kharid
             syms x
             j=normpdf(x,0,1)
             c=int(j,landa,Inf)
   
        end
        inact(alfa,landa)=b+c
    end
    for landa=6:7
        if -landa<D<0
            syms x
            o=normpdf(x,0,1)
            z=1/2*int(o,-landa-alfa,landa-alfa)
        elseif 0<D<landa
            syms x
            u=normpdf(x,0,1)
            s=1/2*int(u,-landa+alfa,landa+alfa)
        end
        act(alfa,landa)=z+s
    end
end
for alfa=3:5
    for landa=6:
7
         h(alfa,landa)=act(alfa,landa)+inact(alfa,landa);
         Tact(alfa,landa)=inact(alfa,landa)/h(alfa,landa);
         Tinact(alfa,landa)=act(alfa,landa)/h(alfa,landa);
         k(alfa,landa)=((alfa^4+6*alfa^2+3)*Tact(alfa,landa)+3*Tinact(alfa,landa))/((alfa^2+1)*Tact(alfa,landa)+Tinact(alfa,landa))^2;
    end
end
[x,y]=meshgrid(3:5,6:.5:7)
[C,h]=contourf(x,y,k,8)
clabel(C,h,'FontSize',6,'Rotation',0)
colorbar
xlabel('alfa');
ylabel('landa');
title('Kurtosis')
اروری که میده:
Error using contourf (line 66)
The size of X must match the size of Z or the number of columns of Z.
 
Error in main5limitedK (line 51)
[C,h]=contourf(x,y,k,8)
می خوام  در نموداری که از روی کدهای بالا به دست می آیدروی محدوده الفا 3 تا 5 و لاندا بین 6و 7 تمرکز کنم اما هرکار ی میکنم ارور اندازه بردار میده

یه مساله دیگه هم هس: ایا در حلقه for  
مییشه اینجوری نوشت؟ for alfa=1:.5:4
ینی پرش 0.5 تایی بین شمارش؟ من وقتی همین کارو برای این کد ها انجام می دم ارور می ده!