۱۳۹۳/۰۸/۰۶, ۰۲:۳۸ ب.ظ
با سلام
یه کد نوشتم که در اون با دو حلقه for مقدار الفا و لاندا رو از 1 تا 8 تغییر می دادم و بعد با استفاده از meshgrid شبکه بندی می کردم و بعد با contourf منحنی ها رو رسم می کردم! اما برای دقیق تر بررسی کردن کار لازم بود الفا رو در محدوده 3 تا 5 و لاندا رو در محدوده 6 تا 7 در حلقه های for بررسی کنم. اما ارور meshgrid میده که طول بردار z با x,y یکی نیس! ضمنا نمی دونم چرا میاد تمام مقادیر مربوط به الفا کمتر از 3 و لاندا کمتر از 7 رو هم در ماتریس 0 میذاره! (من اصن نمیخوام این بخشو محاسبه کنه اینم محاسبه نمیکنه فقط مقدار 0 میذاره که باعث ارور مربوط به طول بردار می شه!) کدم به صورت زیره:
یه مساله دیگه هم هس: ایا در حلقه for
مییشه اینجوری نوشت؟ for alfa=1:.5:4
ینی پرش 0.5 تایی بین شمارش؟ من وقتی همین کارو برای این کد ها انجام می دم ارور می ده!
یه کد نوشتم که در اون با دو حلقه 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')
اروری که میده: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 تمرکز کنم اما هرکار ی میکنم ارور اندازه بردار میده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)
یه مساله دیگه هم هس: ایا در حلقه for
مییشه اینجوری نوشت؟ for alfa=1:.5:4
ینی پرش 0.5 تایی بین شمارش؟ من وقتی همین کارو برای این کد ها انجام می دم ارور می ده!