سلام
می خواستم با دستور for یه حلقه برای این فرمول بنویسم
کد:
z t=r*(x t)+(1-r)*(z t-1)
و t= 1 ta m تی در اینجا اندیس است وx یک ماتریس p*m میباشد و x t به ازای 1 تاm افراز ستونی ماتریس ایکس است .z t حالت حلقه دارد ابتدا z1 را بدست می اوریم سپس دوباره در فرمول جای گذاری کرده z2 و به ترتیب تا zm و در اخر یک ماتریس ستونی از z ها به ما میدهد.
خودم تا حددی برنامه را نوشته ام اما جواب نمی دهد
کد:
x=[12 43 34;75 54 64]
r=.2
[p,m]=size(x)
y=mean(x')
z(0)=y'
for t=1:m
z(t)=r*x(1: p,t)+(1-r)*z(t-1);
end;
ممنون میشم اگه کمک کنید
سلام.
کدهای متلب زیر رو می نویسیم :
کد:
clear all
close all
clc
x=[12 43 34;75 54 64];
x_number=numel(x);
r=0.2;
z_0=0;
z=x;
for t=1:x_number
if (t==1)
z(t)=r*x(t)+(1-r)*z_0;
else
z(t)=r*x(t)+(1-r)*z(t-1);
end
end;
z
نتیجه اجرای کد متلب بالا :
کد:
z =
2.4000 22.1360 29.6070
16.9200 28.5088 36.4856
فقط شما x رو به صورت ماتریس تعریف کرده بودید، نه بردار. اگر x به صورت دنباله اعداد است، بهتره که به صورت بردار تعریف بشه ولی به هر حال من به صورت همین ماتریس براتون نوشتم. فقط باید چگونگی فراخوانی عناصر ماتریس و اندیس های عناصر رو چک کنید و ببینید همون چیزی که شما انتظار داشتید هست یا نه. چون معمولا افراد از این نوع فراخوانی اطلاعی ندارند و چون ترتیب را نمی دانند، برنامه را هم اشتباه متوجه می شوند.
اگر یک دنباله مد نظرتان بوده، x رو به صورت یک بردار تعریف کنید تا دیگر نگران این موارد نباشید و همین کد بالا برای آن جواب می دهد.
فقط تنها مشکل این است که z_0 باید میانگین ماتریس x باشد.یه مثال میزنم براتون
دو متقیر در از یه کالایی در حال اندازه گیرین و به تعداد 3 بار اندازه گیری میشن به صورت ماتریس زیر مینویسیم
x=[12 32 32;43 12 43 ]
حالا بر حسب ابن فرمول z(t)=r*x(1: p,t)+(1-r)*z(t-1 میخواهیم z(t) ها را بدست بیاوریم به شرط اینکه z(0) برابر با میانگین ماتریس x یاشد.
و میانگین x برابر است با mean(x)=[mean motaghayer aval;mean motaghayer dovom]
در کالای اول مقدار در متغیر برابر با{12:43} برای کالای دوم {32:12} و سوم {32:43} و میانگینش برابر مقدار پایین به صورت ستونی است
25.3333
32.6667
دو نوع میانگین گیری رو در زیر براتون مثال زدم :
کد:
clear all
close all
clc
x=[1 2;3 4]
x_mean_1=mean(x)
x_mean_2=mean2(x)
نتیجه اجرای کد متلب بالا :
کد:
x =
1 2
3 4
x_mean_1 =
2 3
x_mean_2 =
2.5000
اولی میانگین هر ستون و دومی میانگین کل عناصر ماتریس دو بعدی را بر می گرداند. خوب دیگه شما باید طبق این دو دستور، آن متغیر را تعریف کنید (با هر کدوم که به دردتون میخوره).
بازم سلام.چند تا مشکل عمده هنوزم هست
1-باز هم با در نظر گرفتن کدهایی که شما نوشتید زمانی که میانگین جای گذازی میشود به جای z_0 برنامه erro میدهد
2-طبق برنامه شما z=x گرفته شده در صورتی که طبق فرمولی که به شما گفتم x1 برابر با ستون اول ماتریس x و x2 برابر با ستون دوم و الی آخر