انجمن سایت کلیدستان



ایراد کد نویسی، خطا در رسم contourfزمان کنونی: ۱۳۹۵/۰۹/۱۹، ۱۲:۱۴ ب.ظ
کاربران در حال بازدید این موضوع: 1 مهمان
نویسنده: ramoona
آخرین ارسال: ramoona
پاسخ 1
بازدید 579

رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
ایراد کد نویسی، خطا در رسم contourf

ایراد کد نویسی، خطا در رسم contourf

#1
با سلام 
یه کد نوشتم که در اون با دو حلقه 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 تایی بین شمارش؟ من وقتی همین کارو برای این کد ها انجام می دم ارور می ده!
پاسخ


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان

آخرین کلیدهای غیررایگان

شما هم می توانید کلیدهای غیررایگان منتشر کنید (بیشتر بدانید)