رفتن به مطلب

استفاده از Function Handle در متلب


helen66

ارسال های توصیه شده

  helen۶۶ گفته است:
ورودی ها رو تغییر دادم بصورت زیر شد: بعدشم از costbat و Earnreg اینا که واسه بدست اوردن خروجی استفاده شده!
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

نیاز نبود اسم متغیرها رو تغییر بدین، منم فقط خروجی رو گفتم چون خیلی شبیه بود. خب الان از هر سه تا ورودی استفاده نمی کنین، شما دوباره این متغیرها رو توی تابع مقدار دهی می کنین، از مقادیر که به عنوان ورودی گرفته میشن استفاده نمی کنین. متغیری به نام این Dt هم توی فانکشن استفاده نشده، فقط به عنوان ورودی تعریف شده.

  • Like 1
لینک به دیدگاه
  • پاسخ 87
  • ایجاد شد
  • آخرین پاسخ

بهترین ارسال کنندگان این موضوع

بهترین ارسال کنندگان این موضوع

  helen۶۶ گفته است:
اینم کد نهایی pso هست که اصلا اجرا نمیشه!!! میشه ایرادششو بگید؟؟؟؟؟
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

یعنی چی اصلا اجرا نمیشه؟ اروری میده؟

 

این خط، ورودی به تابع ندادین، البته توی کد هم ازشون گفتم استفاده نکردین:

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

  • Like 1
لینک به دیدگاه
  Imaaan گفته است:
نیاز نبود اسم متغیرها رو تغییر بدین، منم فقط خروجی رو گفتم چون خیلی شبیه بود. خب الان از هر سه تا ورودی استفاده نمی کنین، شما دوباره این متغیرها رو توی تابع مقدار دهی می کنین، از مقادیر که به عنوان ورودی گرفته میشن استفاده نمی کنین. متغیری به نام این Dt هم توی فانکشن استفاده نشده، فقط به عنوان ورودی تعریف شده.

مرسی مهندس بجای Dd ، Dt نوشته بودم...یعنی نباید مقدار دهی کنم؟؟؟؟چی باید بذارم؟؟؟

  • Like 1
لینک به دیدگاه
  Imaaan گفته است:
یعنی چی اصلا اجرا نمیشه؟ اروری میده؟

 

این خط، ورودی به تابع ندادین، البته توی کد هم ازشون گفتم استفاده نکردین:

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

خب هر سه تا رو بصورت رندم تعریف کردم تو برنامه...اینم اررورش:

Error using @(kd,Id,Dt)cost2(kd,Id,Dd)

Not enough input arguments.

 

Error in pssoo (line 65)

particle(i).Cost=CostFunction(particle(i).Position);

 

  • Like 1
لینک به دیدگاه
  helen۶۶ گفته است:
مرسی مهندس بجای Dd ، Dt نوشته بودم...یعنی نباید مقدار دهی کنم؟؟؟؟چی باید بذارم؟؟؟

 

ببین هلن خانوم، مثلا من بخوام یه فانکشی برای حل معادله تعریف کنی، مثلا دو معادله و دو مجهول، خب یه سری ضرایب داریم، یه سری هم ثابت های معادله، این دو تا رو به عنوان دو تا ماتریس از ورودی می گیرم، خیلی ب اینکه چجوری نوستم کاری نداریم، یه فانکشنی هست که دو تا ورودی داره، می خوایم جواب های معادله هامون رو بهمون بده، اونم یه ماتریس میشه، داخل یه mfile می نویسمش، اسمش هم mysolve میذارم:

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

حالا می خوایم توی یه کد دیگه ازش استفاده کنم، اسم متغیرها رو هم کاملا متفاوت گذاشتم که نشون بدم نیاز به یکی بودنشون نیست، می تونن متفاوت باشن:

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

البته اصلا نیاز نیست که من حتما از handle function استفاده کنم، می تونم اینجوری هم بنویسم، مستقیم ورودی ها رو به فانکشنم بدم:

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

  helen۶۶ گفته است:
خب هر سه تا رو بصورت رندم تعریف کردم تو برنامه...اینم اررورش:

Error using @(kd,Id,Dt)cost2(kd,Id,Dd)

Not enough input arguments.

 

Error in pssoo (line 65)

particle(i).Cost=CostFunction(particle(i).Position);

 

 

مثل کد من باید به تعداد ورودی هایی که برای تابعتون تعریف کردین، بهش ورودی بدین، توی این خطی که میگه (65) به CostFunction فقط یه ورودی دادین، البته برای بعدی هم همینطور.

  • Like 1
لینک به دیدگاه
  Imaaan گفته است:
ببین هلن خانوم، مثلا من بخوام یه فانکشی برای حل معادله تعریف کنی، مثلا دو معادله و دو مجهول، خب یه سری ضرایب داریم، یه سری هم ثابت های معادله، این دو تا رو به عنوان دو تا ماتریس از ورودی می گیرم، خیلی ب اینکه چجوری نوستم کاری نداریم، یه فانکشنی هست که دو تا ورودی داره، می خوایم جواب های معادله هامون رو بهمون بده، اونم یه ماتریس میشه، داخل یه mfile می نویسمش، اسمش هم mysolve میذارم:

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

حالا می خوایم توی یه کد دیگه ازش استفاده کنم، اسم متغیرها رو هم کاملا متفاوت گذاشتم که نشون بدم نیاز به یکی بودنشون نیست، می تونن متفاوت باشن:

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

البته اصلا نیاز نیست که من حتما از handle function استفاده کنم، می تونم اینجوری هم بنویسم، مستقیم ورودی ها رو به فانکشنم بدم:

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

 

 

مثل کد من باید به تعداد ورودی هایی که برای تابعتون تعریف کردین، بهش ورودی بدین، توی این خطی که میگه (65) به CostFunction فقط یه ورودی دادین، البته برای بعدی هم همینطور.

 

مرسی بابت راهنماییتون...

مهندس هر سه تا ورودی ی ماتریس بصورت رندم هستش که 1*100 هستند...چطور سه اشو زیر هم تعریف کنم؟؟ تو این قسمت باید تعریف کنم احتمالا:

% Initialize Position

particle(i).Position=randi([-1,1],1,100);

 

% Initialize Velocity

particle(i).Velocity=zeros(VarSize);

 

  • Like 1
لینک به دیدگاه
  helen۶۶ گفته است:
مرسی بابت راهنماییتون...

مهندس هر سه تا ورودی ی ماتریس بصورت رندم هستش که 1*100 هستند...چطور سه اشو زیر هم تعریف کنم؟؟ تو این قسمت باید تعریف کنم احتمالا:

% Initialize Position

particle(i).Position=randi([-1,1],1,100);

 

% Initialize Velocity

particle(i).Velocity=zeros(VarSize);

 

 

خواهش می کنم، گفتم کدوم خط که، توی این خط فقط یه ورودی دارین به تابعتون می دین:

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

  • Like 1
لینک به دیدگاه
  Imaaan گفته است:
خواهش می کنم، گفتم کدوم خط که، توی این خط فقط یه ورودی دارین به تابعتون می دین:

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

متوجه شدم اقا ایمان ولی چطوری سه تا ورودی بدم؟؟/

  • Like 1
لینک به دیدگاه
  helen۶۶ گفته است:
متوجه شدم اقا ایمان ولی چطوری سه تا ورودی بدم؟؟/

 

شما سه تا ورودی به تابع چجوری میدی، اینم همونجوری دیگه، بینشون کاما بذارین، دو تا ورودی دیگه هم باشد کنار این بذارین، البته تاثیری نباید داشته باشه چون توی تابعتون که استفاده نمی کنین.

  • Like 1
لینک به دیدگاه
  Imaaan گفته است:
شما سه تا ورودی به تابع چجوری میدی، اینم همونجوری دیگه، بینشون کاما بذارین، دو تا ورودی دیگه هم باشد کنار این بذارین، البته تاثیری نباید داشته باشه چون توی تابعتون که استفاده نمی کنین.

 

ییخشید متوجه نمیشم چرا توی تابع استفاده نمیشه؟؟!!چون این سه تا که بصورت رندم تعریف میشن ی سری قید هم دارن که برای بدست اوردن تابع استفاده شدن....

لینک به دیدگاه
  Imaaan گفته است:
شما سه تا ورودی به تابع چجوری میدی، اینم همونجوری دیگه، بینشون کاما بذارین، دو تا ورودی دیگه هم باشد کنار این بذارین، البته تاثیری نباید داشته باشه چون توی تابعتون که استفاده نمی کنین.

 

این که اشتباهه ،سه تا ورودی رو که دادم بازمهمون اررور میده:

% Evaluation

particle(i).Cost=CostFunction(particle(i).Position,[-1,1],1,100,[-1,1],1,100);

  • Like 1
لینک به دیدگاه
  helen۶۶ گفته است:
ییخشید متوجه نمیشم چرا توی تابع استفاده نمیشه؟؟!!چون این سه تا که بصورت رندم تعریف میشن ی سری قید هم دارن که برای بدست اوردن تابع استفاده شدن....

 

در موردش که قبلا توضیح دادم، چرا اونا استفاده نمیشن.

 

  helen۶۶ گفته است:
این که اشتباهه ،سه تا ورودی رو که دادم بازمهمون اررور میده:

% Evaluation

particle(i).Cost=CostFunction(particle(i).Position,[-1,1],1,100,[-1,1],1,100);

 

هلن خانوم این کجاش سه تا ورودی هست، اینجا که 7 تا ورودی دادین.

  • Like 1
لینک به دیدگاه
  Imaaan گفته است:
در موردش که قبلا توضیح دادم، چرا اونا استفاده نمیشن.

 

 

 

هلن خانوم این کجاش سه تا ورودی هست، اینجا که 7 تا ورودی دادین.

سلام اقا ایمان،ببخشید دیشب اینقدر خسته بودم اشتباه نوشتم،منظورم سه تا ماتریس تصادفی 1*100بود:

 

% Evaluation

particle(i).Cost=CostFunction(particle(i).Position ,randi([-1,1],1,100),rndi([-1,1],1,100):

  • Like 1
لینک به دیدگاه
  helen۶۶ گفته است:
سلام اقا ایمان،ببخشید دیشب اینقدر خسته بودم اشتباه نوشتم،منظورم سه تا ماتریس تصادفی 1*100بود:

 

% Evaluation

particle(i).Cost=CostFunction(particle(i).Position ,randi([-1,1],1,100),rndi([-1,1],1,100):

 

سلام

خواهش می کنم، الانم rndi نوشتین که؟

  • Like 1
لینک به دیدگاه
  Imaaan گفته است:
سلام

خواهش می کنم، الانم rndi نوشتین که؟

 

سلام

این اصلاح شدش هست مهندس ولی این اررور رو داد:

Undefined function 'cost2' for input arguments of type 'double'.

 

Error in @(kd,Id,Dd)cost2(kd,Id,Dd)

 

 

Error in pssoo (line 65)

particle(i).Cost=CostFunction(particle(i).Position,randi([-1,1],1,100),randi([-1,1],1,100));

 

  • Like 1
لینک به دیدگاه
  Imaaan گفته است:
سلام

خواهش می کنم، الانم rndi نوشتین که؟

چرا توی فانکشن cost2 اررور نمیده واسه تعریف ورودی ولی تو pssoo اررور میده؟؟؟؟؟

  • Like 1
لینک به دیدگاه
  helen۶۶ گفته است:
سلام

این اصلاح شدش هست مهندس ولی این اررور رو داد:

Undefined function 'cost2' for input arguments of type 'double'.

 

Error in @(kd,Id,Dd)cost2(kd,Id,Dd)

 

 

Error in pssoo (line 65)

particle(i).Cost=CostFunction(particle(i).Position,randi([-1,1],1,100),randi([-1,1],1,100));

 

 

  helen۶۶ گفته است:
چرا توی فانکشن cost2 اررور نمیده واسه تعریف ورودی ولی تو pssoo اررور میده؟؟؟؟؟

 

اسم فانکشنتون همینه؟ متلب می تونه این فانکشن رو پیدا کنه؟

  • Like 1
لینک به دیدگاه
  Imaaan گفته است:
اسم فانکشنتون همینه؟ متلب می تونه این فانکشن رو پیدا کنه؟

بله اقا ایمان همینه...اررورش بخاطر چیه؟؟

  • Like 1
لینک به دیدگاه
  helen۶۶ گفته است:
بله اقا ایمان همینه...اررورش بخاطر چیه؟؟

 

شما توی متلب این بنویس، ببین فانکشن باز میشه:

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

  • Like 1
لینک به دیدگاه
  Imaaan گفته است:
شما توی متلب این بنویس، ببین فانکشن باز میشه:

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

این که اررور داد:sad0::icon_pf (34):

Error using open (line 100)

File 'cost2' not found.

 

چیکارش کنم مهندس؟؟؟اینو دیشب باید میفرستادم واسه استاد !!!:icon_pf (34):

  • Like 1
لینک به دیدگاه

×
×
  • اضافه کردن...
AM 00 : 1

Hour
Minutes
AM PM
1 2 3 4 5 6 7 8 9 10 11 12