اطلاعیه

Collapse
No announcement yet.

کمک در مورد توابع چند ضابطه ای

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    کمک در مورد توابع چند ضابطه ای

    سلام دوستان . می خواستم در مورد نوشتن توابع چند ضابطه ای در متلب راهنماییم کنید مثلا تابع زیر
    y={x , x>0 : x^3 , x<0}
    lممنون

    #2
    پاسخ : کمک در مورد توابع چند ضابطه ای

    سلام
    چرا خودت یک تابع تعریف نمیکنی؟
    کد زیر رو در ادیتور کپی کن و با نام myfun که اسم تابع هست ذخیره کن
    کد:
    function y = myfun(x)
    if x<0
      y = x.^3;
    else
      y = x;
    end
    حالا دستور myfun همون کار رو انجام میده مثلا
    » myfun(-3)

    ans =

    -27

    » myfun(3)

    ans =

    3

    دیدگاه


      #3
      پاسخ : کمک در مورد توابع چند ضابطه ای

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

      ??? Input argument "x" is undefined.

      Error in ==> myfun at 2
      if x<0

      و وقتی برای x یه بازه رو مشخص می کنم مثلا
      x=[-10:10];
      و می نویسم
      myfun(x)
      طبق ارور بالا شرط اول رو اعمال نمی کنه و خروجی رو از شرط دوم استفاده می کنه اما اگر مثل شما خروجی تو یه نقطه رو بخوام درست عمل میکنه . اصلا یه چیزی بگم من می خوام یه تابع گسسته رو رسم کنم و ازش استفاده کنم برای کانولوشن و تابعی که می خوام رسم کنم یه تابع چند ضابطه ای هستش . ممنون میشم اگر بازم راهنماییم کنید

      دیدگاه


        #4
        پاسخ : کمک در مورد توابع چند ضابطه ای

        سلام
        1- ببینید myfun یک تابع است و با یک m-file فرق دارد. همه توابع مطلب رو اگه کامپایل کنید همین error رو میگیرن چون ورودی های تابع ناشناخته هستند.
        شما باید myfun رو در یک m-file دیگه فراخوانی کنید و اون رو کامپایل کنید.
        2- چون x یک ماتریس است بهتر است از تابع زیر استفاده کنید که تک تک اعضای x را نگاه میکند و اگر منفی یا مثبت باشد y را برای آنها محاسبه میکند:
        کد:
        function y = myfun(x)
        y = zeros(size(x));
        for i=1:size(x,1)*size(x,2)
          if x(i)<0
           y(i) = x(i).^3;
          else
           y(i) = x(i);
          end
        end
        برای مثال کد زیر را در ادیتور یا command window اجرا کنید:
        کد:
        x = [-10:10];
        » y = myfun(x)
        
        y =
        
         Columns 1 through 6 
        
            -1000    -729    -512    -343    -216    -125
        
         Columns 7 through 12 
        
             -64     -27     -8     -1      0      1
        
         Columns 13 through 18 
        
              2      3      4      5      6      7
        
         Columns 19 through 21 
        
              8      9     10

        برای کانولوشن هم که میدونید میتونید از دستور conv استفاده کنیدو برای رسم تابع گسسته هم از دستور stem
        سوالی باشه در خدمتم

        دیدگاه


          #5
          پاسخ : کمک در مورد توابع چند ضابطه ای

          سلام
          من جدیدا کار با مطلب رو شروع کردم
          ممنون از راهنمایی تون راستش منم دقیقا همین مشکل رسم یه تابع چند ضابطه ای رو داشتم
          الان بعد از تعریف myfun چه طور باید این تابع رو توی plot یا هر صفحه ای نمایش بدیم؟؟
          هر جوری می نویسم خطا میده :((
          (من فعلا همین تابع plot رو برای رسم دیدم! اصلا نمیدونم راهش چیه؟! :cry: )

          اگه براتون ممکنه زود راهنمایی کنین من باید تحویل بدم :((
          خیلی ممنون

          دیدگاه

          لطفا صبر کنید...
          X