PDA

View Full Version : سوال درباره نوشتن توابع ریاضی در متلب



mahboob21
جمعه 21 شهریور 1393, 18:04 عصر
سلام دوستان:لبخندساده:
می خواهم تعدادی تابع ریاضی را در متلب بنویسم ولی با پیغام خطا مواجه می شوم از دوستان اگر کسی نحوه نوشتن همه یا تعدادی از این توابع را در متلب بداند ممنون می شوم کمک کند.
با تشکر از لطف شما.
123360

rahnema1
جمعه 21 شهریور 1393, 22:02 عصر
سلام
این جور می شه نوشت

f2=@(x) sum(100 * (x(2:end )-x(1:end-1).^2).^2+(x(1:end-1)-1).^2);
f3=@(x) sum(x.^2-10*cos( 2*pi.*x)+10);
f4=@(x) sum(x.^2)/ 4000-prod( cos(bsxfun( @rdivide,x, sqrt( 1:numel(x))))) +1;
f6=@(x,a) 1/(1/500+ sum(bsxfun( @rdivide,1 ,((1:25)+ sum(bsxfun(@minus, x(1:2)', a(1:2,1:25)).^6) ))));

coronaa
شنبه 22 شهریور 1393, 16:25 عصر
با حلقه for هم میشه نوشت؟
و اینکه کار این سه تا دستور چیه؟

bsxfun , @minus , @rdivide

rahnema1
شنبه 22 شهریور 1393, 16:38 عصر
با حلقه for هم میشه نوشت؟
و اینکه کار این سه تا دستور چیه؟

bsxfun , @minus , @rdivide

در متلب باید تا می تونیم از حلقه پرهیز کنیم چون سرعت کار را بسیار پایین میاره ( مگه اینکه ناچار باشیم) در عوض بهتره از دستورات آماده استفاده کنیم که سرعت بالا دارند
bsxfun یک دستور را روی تک تک اعضای یک آرایه اعمال می کنه مثلا دستور minus یعنی تفریق یا rdivide یعنی تقسیم

ehsan_ord
پنج شنبه 27 شهریور 1393, 11:29 صبح
سلام من یه کد داخل متلب میخواستم که فاصله اقلیدسی رو حساب کنه اگه کمکم کنید ممنون میشم

rahnema1
پنج شنبه 27 شهریور 1393, 12:08 عصر
یک آرایه با دو ستون ( هر ستون نشانگر یک نقطه)


a=rand(5,2);
fasele=sqrt(sum((a(:,1)-a(:,2)).^2));

ehsan_ord
پنج شنبه 27 شهریور 1393, 14:45 عصر
ببخشید من میخوام کدی باشه که دوتا بردار از ورودی دریافت کنه و فاصله اقلیدسی رو محاسبه کنه و اینکه این بردارها mبعدی باشند ممنون

rahnema1
پنج شنبه 27 شهریور 1393, 15:03 عصر
ببخشید من میخوام کدی باشه که دوتا بردار از ورودی دریافت کنه و فاصله اقلیدسی رو محاسبه کنه و اینکه این بردارها mبعدی باشند ممنون

دوست عزیز من که همین جواب را در پست قبل به شما دادم

این یکی به صورت تابع که دو تا بردار a و b می گیره


fasele = @(a,b) sqrt(sum((a-b).^2));

m=10;
fasele( rand(m,1) , rand(m,1) )

ehsan_ord
پنج شنبه 27 شهریور 1393, 15:50 عصر
من خیلی تازه کارم .استادمون فرمول فاصله اقلیدسی رو بهمون داد گفتش که بادستور input دوتا بردار بگیره با استفاده از فرمول فاصله رو حساب کنه مثلا دوتا بردار [4,5,7,2]و[1,0,-1,2]
فرمول به این صورتهDp(xi,xj)=(sum(X(ik)-X(jk)).^p).^1/p که k از1تا mهستش و m بعد بردار یعنی mبعدی.این برنامه رو شنبه باید تحویل بدم:افسرده:

rahnema1
پنج شنبه 27 شهریور 1393, 16:10 عصر
فرمولی که استادتون داده متاسفانه اشتباهه و این فرمول فاصله اقلیدسی نیست
اون که نوشتم درسته

a = input('lotfan bordare avval ra vared konid:');
b = input('lotfan bordare dovvom ra vared konid:');
fasele = sqrt(sum((a-b).^2));
disp('fasele = ' )
disp(fasele)


این که مبتدی هستید هم اشکالی نداره. هر کجا اشکال داشتید سوال کنید

ehsan_ord
پنج شنبه 27 شهریور 1393, 16:19 عصر
آقا یه دنیا ممنون .خیلی لطف کردین .احتمالا توی طول ترم بازم مزاحمتون میشم.روزتون بخیر

gelarekhatibi
دوشنبه 18 آبان 1394, 13:00 عصر
سلام من باید تمرین Image retrieval رو بنویسم. باید روی تصویر ها هیستوگرام بگیرم و فاصله اقلیدوسی و روی هیستوگرام ها بگیرم. و با بقیه تصاویر مقایسه کنم. نمیدونم چطور روی هیستوگرام ها فاصله اقلیدوسی بگیرم و با بقیه تصاویر مقایسه کنم. وقت خیلی کم دارم. لطفا کمکم کنید

marjan.jan
جمعه 21 آبان 1395, 20:18 عصر
سلام
کسی میتونه کمکم کنه..:گریه:
برای این سه تا تابع ریاضی میخوام توی متلب نمودار رسم کنم توی یه دستگاه مختصات..در ضمن دامنه تغییر x در تابع g1 از 1 تا 2...و در تابع g2 از 2 تا 4
کسی برنامه هاشو بلده برام بنویسه؟
من اصلا متلب بلد نیستم کار کنم:افسرده:
143442

mb1372
دوشنبه 24 آبان 1395, 22:39 عصر
سلام
کسی میتونه کمکم کنه..:گریه:
برای این سه تا تابع ریاضی میخوام توی متلب نمودار رسم کنم توی یه دستگاه مختصات..در ضمن دامنه تغییر x در تابع g1 از 1 تا 2...و در تابع g2 از 2 تا 4
کسی برنامه هاشو بلده برام بنویسه؟
من اصلا متلب بلد نیستم کار کنم:افسرده:
143442
سلام
ابتدا دامنه تعریف توابع رو مشخص کنید:

x1=1:0.05:2;
x2=2:0.05:4;
x3=[1 2 4 5];
توابع رو تعریف کنید (مطابق با توابع خودتون تغییرش بدید: ^. یعنی به توان):

g1=1+x.^3;
g2=2-x+x.^4;
g3=[4 6 10 8];
در آخرین مرحله نمودار رو رسم کنید:

plot(x1,g1,x2,g2)
hold on
plot(x3,g3,'*')