رفتن به مطلب

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


helen66

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

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

 

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

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

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

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

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

 

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

 

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

 

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

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

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

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

 

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

 

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

 

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

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);

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

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 فقط یه ورودی دادین، البته برای بعدی هم همینطور.

لینک به دیدگاه
ببین هلن خانوم، مثلا من بخوام یه فانکشی برای حل معادله تعریف کنی، مثلا دو معادله و دو مجهول، خب یه سری ضرایب داریم، یه سری هم ثابت های معادله، این دو تا رو به عنوان دو تا ماتریس از ورودی می گیرم، خیلی ب اینکه چجوری نوستم کاری نداریم، یه فانکشنی هست که دو تا ورودی داره، می خوایم جواب های معادله هامون رو بهمون بده، اونم یه ماتریس میشه، داخل یه 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);

 

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

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

% Initialize Position

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

 

% Initialize Velocity

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

 

 

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

 

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

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

 

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

 

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

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

 

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

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

 

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

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

 

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

% Evaluation

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

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

 

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

 

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

% Evaluation

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

 

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

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

 

 

 

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

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

 

% Evaluation

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

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

 

% Evaluation

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

 

سلام

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

لینک به دیدگاه
سلام

خواهش می کنم، الانم 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));

 

لینک به دیدگاه
سلام

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

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

لینک به دیدگاه
سلام

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

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));

 

 

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

 

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

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

 

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

 

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

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

 

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

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

Error using open (line 100)

File 'cost2' not found.

 

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

لینک به دیدگاه

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


×
×
  • اضافه کردن...