رفتن به مطلب

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


helen66

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

با سلام

میخوام فرمول زیر رو بصورت فانکشن بنویسم ..

cost=soschg+costbat-Earnre

کد زیرو براش نوشتم ولی اروررمیده میشه لطف کنید ایرادشو بگید؟

با تشکر

 

CostFunction=@(kd,Id,Dt) codd17(kd,Id,Dt); % Cost Function

که codd17 بصورت زیره:

function [ cost ] = codd17( coschg,costbat,Earnreg )

%UNTITLED7 Summary of this function goes here

% Detailed explanation goes here

 

cost=codd15+codd4-codd16;

disp(cost)

end

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

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

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

با سلام

میخوام فرمول زیر رو بصورت فانکشن بنویسم ..

cost=soschg+costbat-Earnre

کد زیرو براش نوشتم ولی اروررمیده میشه لطف کنید ایرادشو بگید؟

با تشکر

 

CostFunction=@(kd,Id,Dt) codd17(kd,Id,Dt); % Cost Function

که codd17 بصورت زیره:

function [ cost ] = codd17( coschg,costbat,Earnreg )

%UNTITLED7 Summary of this function goes here

% Detailed explanation goes here

 

cost=codd15+codd4-codd16;

disp(cost)

end

 

سلام

چه اروری میده؟ چجوری ازش استفاده می کنین؟ فانکشنتون رو داخل یه ام فایل نوشتین و سیو کردین؟

  • Like 2
لینک به دیدگاه
سلام

چه اروری میده؟ چجوری ازش استفاده می کنین؟ فانکشنتون رو داخل یه ام فایل نوشتین و سیو کردین؟

سلام،این اررورشه:

Error using +

Matrix dimensions must agree.

 

Error in codd17 (line 5)

cost=codd15+codd4-codd16;

مثلا ی سری عدد بعنوان ورودی بهش میدیم تا خروجی بگیریم..

coschg,costbat,Earnre هر کدومشو تو ی ام فایل نوشتم...

  • Like 2
لینک به دیدگاه
سلام،این اررورشه:

Error using +

Matrix dimensions must agree.

 

Error in codd17 (line 5)

cost=codd15+codd4-codd16;

مثلا ی سری عدد بعنوان ورودی بهش میدیم تا خروجی بگیریم..

coschg,costbat,Earnre هر کدومشو تو ی ام فایل نوشتم...

 

سلام

خب اینجا میگه جمع نمی تونین استفاده کنین، ابعاد ماتریس ها به هم نمی خوره.

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

 

مثلا من بخوام از تابع times متلب برای اینکار استفاده کنم:

 

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

  • Like 2
لینک به دیدگاه
سلام

خب اینجا میگه جمع نمی تونین استفاده کنین، ابعاد ماتریس ها به هم نمی خوره.

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

 

مثلا من بخوام از تابع times متلب برای اینکار استفاده کنم:

 

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

 

اخه ابعادشو چک کردم هر سه تا 1*100هستند.

یعنی اشتباه نوشتم و باید تو ی ام فایل بنویسم؟؟؟(چون خیلی زیاد میشد جدا گانه نوشتمشون.)

  • Like 2
لینک به دیدگاه
اخه ابعادشو چک کردم هر سه تا 1*100هستند.

یعنی اشتباه نوشتم و باید تو ی ام فایل بنویسم؟؟؟(چون خیلی زیاد میشد جدا گانه نوشتمشون.)

 

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

  • Like 2
لینک به دیدگاه
نمی دونم چیکار کردین که، فانکشن رو باید توی یه ام فایل بنویسین و سیو کنین، بعد داخل کد دیگه مثل چیزی که بالا نوشتم، استفاده کنین.:a030:

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

  • Like 2
لینک به دیدگاه
خب منم این کارو کردم واسه تاشون....:ws52:

 

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

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

سلام مهندس

من اگه الان بخوام همه برنامه رو تو ی فانکشن بنویسم ،سه تا از متغیر ها که بصورت تصادفی تغییر میکنه رو بعنوان ورودی بگیرم؟؟؟(kd,Id,Dt)

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

ی سوال دیگه هم دارم :من اگه بخوام cost=soschg+costbat-Earnre بصورت فانکشن بنویسم که سمت چپ هر کدوم ی سری ورودی دارن ،برای ورودی های فانکشن cost باید همون soschgوcostbatو

Earnreبنویسم یا کل ورودی های این سه تا رو؟؟؟؟؟

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

من اگه الان بخوام همه برنامه رو تو ی فانکشن بنویسم ،سه تا از متغیر ها که بصورت تصادفی تغییر میکنه رو بعنوان ورودی بگیرم؟؟؟(kd,Id,Dt)

 

ی سوال دیگه هم دارم :من اگه بخوام cost=soschg+costbat-Earnre بصورت فانکشن بنویسم که سمت چپ هر کدوم ی سری ورودی دارن ،برای ورودی های فانکشن cost باید همون soschgوcostbatو

Earnreبنویسم یا کل ورودی های این سه تا رو؟؟؟؟؟

 

سلام

ببخشید، خیلی متوجه نشدم. با کد توضیح میدین؟

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

ببخشید، خیلی متوجه نشدم. با کد توضیح میدین؟

 

مثلا این درسته؟؟؟؟؟؟

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

  • Like 1
لینک به دیدگاه
مثلا این درسته؟؟؟؟؟؟
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

این کلش یه فانکشن هست؟

وسطش فانکشن رو بستین که، end گذاشتین.

  • Like 1
لینک به دیدگاه
این کلش یه فانکشن هست؟

وسطش فانکشن رو بستین که، end گذاشتین.

 

بله کلش ی فانکشنه...یعنی باید همه endواسه for هستو اخر بنویسم ؟؟مثل کد زیر:

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

  • Like 1
لینک به دیدگاه
بله کلش ی فانکشنه...یعنی باید همه endواسه for هستو اخر بنویسم ؟؟مثل کد زیر:

 

نه هلن خانوم، اینجوری که حلقه هاتون به دچار مشکل میشه. ببینین توی کد اولتون یه end خط 50 دارین که مربوط به هیچ forی نمیشه، اون فانکشنتون رو می بنده، متلب فکر می کنه تعریف فانکشنتون تموم شده. در انتحای فانکشن هم میشه از end استفاده کرد، ولی الزامی نیست، مگر اینکه بخواین فانکشن جدیدی توی همون کد تعریف کنین، که توی این حالت end فانکشن هم نیازه که نوشته بشه.:a030:

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

سلام.این چیزی که میگم ربطی به برنامه نویسی نداره ولی فقط واسه این که کدتون خوانا تر بشه و دیباگ کردنش راحت تر باشه ،هر وقت نوشتن کدتون تموم شد همه ی کد رو انتخاب کنید و Ctrl +I بزنید تا هر حلقه یا تابعی با end خودش هم تراز بشه.الان با این کار شما متوجه میشی که آخرین end به هیچ حلقه یا تابعی تعلق نداره.این کار تو متلب به همین راحتی انجام میشه ولی مثلا اگه همین کد شما تو پایتون بود مرتب کردنش یه کار عذاب آور میشد.

  • Like 2
لینک به دیدگاه
نه هلن خانوم، اینجوری که حلقه هاتون به دچار مشکل میشه. ببینین توی کد اولتون یه end خط 50 دارین که مربوط به هیچ forی نمیشه، اون فانکشنتون رو می بنده، متلب فکر می کنه تعریف فانکشنتون تموم شده. در انتحای فانکشن هم میشه از end استفاده کرد، ولی الزامی نیست، مگر اینکه بخواین فانکشن جدیدی توی همون کد تعریف کنین، که توی این حالت end فانکشن هم نیازه که نوشته بشه.:a030:

 

مرسی اقا ایمان ،اصلاحش کردم...میشه لطف کنید ایراد برنامه رو بگید چیه امشب باید برای استادم بفرستمش ...برنامه کلی pso هست نمیدونم تادرسته یا نه؟ عدداش نمیدونم چرا شبیه هم هستن؟!!!

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

  • Like 1
لینک به دیدگاه
مرسی اقا ایمان ،اصلاحش کردم...میشه لطف کنید ایراد برنامه رو بگید چیه امشب باید برای استادم بفرستمش ...برنامه کلی pso هست نمیدونم تادرسته یا نه؟ عدداش نمیدونم چرا شبیه هم هستن؟!!!
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

دو تا از ورودی ها تون (costbat و Earnreg) رو استفاه نمی کنین، دوباره هر دو رو توی فانکشن تعریف می کنین. یا متغیرهایی توی فانکشن دارین که استفاده نمیشن، فقط محاسبه شون می کنین. متلب یه خط نارنی برای اینا میذاره، که موس رو روش نگه دارین، توضیحش رو هم میاره. این اسم فانکشن و متغیر خروجی هم خیلی شبیه به هم هستن، ممکنه با هم اشتباه بشن.

 

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

  • Like 1
لینک به دیدگاه
دو تا از ورودی ها تون (costbat و Earnreg) رو استفاه نمی کنین، دوباره هر دو رو توی فانکشن تعریف می کنین. یا متغیرهایی توی فانکشن دارین که استفاده نمیشن، فقط محاسبه شون می کنین. متلب یه خط نارنی برای اینا میذاره، که موس رو روش نگه دارین، توضیحش رو هم میاره. این اسم فانکشن و متغیر خروجی هم خیلی شبیه به هم هستن، ممکنه با هم اشتباه بشن.

 

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

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

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

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

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