اطلاعیه

Collapse
No announcement yet.

طریقه رسم نمودار در نرم افزار matlab

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

    طریقه رسم نمودار در نرم افزار matlab

    با سلام
    می خواستم یک نمودار در نرم افزار matlab رسم کنم
    Zin(jw)=R/(1+jQt*((w^2-w0^2)/(w-w0()))
    w0=10^7
    Qt=100
    R=5k
    10^6<w<10^8
    رسم دامنه و فاز؟
    خواهش می کنم کمکم کنید که چیکار کنم

    #2
    پاسخ : طریقه رسم نمودار در نرم افزار matlab

    سلام. کار خاصی نداره .
    من اصلا کاری ندارم که فرمولت چیه. این که میگم واسه هر فرمولی کاربرد داره.
    هر رابطه موهومی یه مقدار دامنه داره و یه مقدار فاز. دامنه رو میتونی با فرمول abs و فاز رو میتونی با فرمول angle بدست بیاری. فقط هواست باشه که فرمول رو درست تایپ کنی. مثلا ما تو متلب چیزی به اسم jQ نداریم. ااگه منظورت حالت موهومی باشه باید بنویسی j*Q . خودت یکم روش کار کن. اگه نتونستی بگو واست انجام بدم.

    دیدگاه


      #3
      پاسخ : طریقه رسم نمودار در نرم افزار matlab

      سلام
      راهنمایی آقای حسین وردی کافیه ولی من چون وقت زیادی دارم کدش رو هم نوشتم.
      ابتدا متغیرها رو تعریف کنین
      بعد با دستور linspace بردار فرکانس یا w رو بسازین
      بعد عبارت Zin رو محاسبه کنین. در محاسبه دقت کنین که به جای علامت / علامت /. استفاده شده این به خاطر اینه که matlab تقسیم رو عضو به عضو انجام بده و با تقسیم ماتریسی اشتباه نگیره.
      بعد با دستور abs اندازه Zin رو بدست بیارین(در کد پایین من یک لگاریتم هم از اندازه گرفتم و اون رو در 20 ضرب کردم تا بر حسب dB بشه)
      و با دستور angle فازش رو محاسبه کنین
      بعد با دستور semilogx هم اندازه و فاز رو رسم کنین. علت اینکه از این دستور(و نه دستور معروف plot) استفاده میکنیم اینه که این دستور محور افقی رو به شکل لگاریتمی رسم میکنه
      کد:
      w0 = 10^7;
      Qt = 100;
      R = 5000;
      w = linspace(10^6,10^8,1000);
      Zin = R./( 1+1i*Qt*(w.^2-w0^2)./(w-w0) );
      abs_Zin = 20*log10(abs(Zin));
      phs_Zin = angle(Zin);
      figure
      semilogx(w,abs_Zin)
      figure
      semilogx(w,phs_Zin)
      دقت کنین که خروجی دستور angle رادیان هست اگر درجه میخواین باید یک ضریب اصلاح اعمال کنین
      در پایان کار هم برای این که برای محورها label بگذارین و یا برای کل نمودار یک title تعریف کنین میتونین از دستورات xlabel، ylabel و title استفاده کنین

      دیدگاه


        #4
        پاسخ : طریقه رسم نمودار در نرم افزار matlab

        با تشکر از جوابتون
        من می خواهم مقدار درجه و ضریب کیفیت (Qt) را می خواهم در نمودار نشان دهم و همچنین نمی توان از دستور plot استفاده کرد
        منظور شما از اینکه اگر درجه میخواین باید یک ضریب اصلاح اعمال کنین چیست ؟
        با تشکر

        دیدگاه


          #5
          پاسخ : طریقه رسم نمودار در نرم افزار matlab

          سلام
          خروجی دستور angle رادیان هست، اگر شما درجه میخواهید باید یک ضریب اصلاح اعمال کنید یعنی رادیان رو به درجه تبدیل کنید
          کد:
          phs_Zin = angle(Zin)/pi*180;
          برای قرار دادن Qt در نمودار هم میتونید از دستور text استفاده کنید.
          برای مثال دستور زیر عبارت wwww را در مختصات نقطه ای با طول 10000000 و عرض 110- مینویسد.
          کد:
          text(10000000,-110,'wwww')

          دیدگاه


            #6
            پاسخ : طریقه رسم نمودار در نرم افزار matlab

            با سلام
            مهندس جان شاید منظورم را خوب نرسوندم منظورم رسم پاسخ فرکانسی هست یعنی روی محور y دامنه و روی محور x هم w باشد و شکل موج به صورت یک فیلتر میان گذر RLC می شود و نمی خواهم جداگانه آنها را رسم کنم.
            با تشکر

            دیدگاه


              #7
              پاسخ : طریقه رسم نمودار در نرم افزار matlab

              سلام
              نوشته اصلی توسط mohsen diod
              منظورم رسم پاسخ فرکانسی هست یعنی روی محور y دامنه و روی محور x هم w باشد و شکل موج به صورت یک فیلتر میان گذر RLC می شود
              خوب همینطوره دیگه!
              منتها نمیدونم چرا شکل موج به صورت فیلتر میان گذر نشده
              نوشته اصلی توسط mohsen diod
              نمی خواهم جداگانه آنها را رسم کنم.
              اگر منظورتون اینه که دامنه و فاز رو زیر هم رسم کنید، باید از دستور subplot استفاده کنید

              دیدگاه


                #8
                پاسخ : طریقه رسم نمودار در نرم افزار matlab

                سلام دوستان اگر تابع موهومی نباشد چه جور رسم میشه؟
                فرمول تابعی که نمودارش رو باید رسم کنم اینه:>> y=(x+q*(1-x))./(x/20.0)+q*(1-x);
                x=[0.48 0.53 0.64 0.72 0.74 0.76];
                y=[2.3,3.5,4.4,4.8,5.2,5.6];
                هردفه رسم میکنم یا ثققخق میده یا شکلش زمین تا اسمون بادفعه قبل فرق داره!
                راستی به ازا سه مقدار مختلف متغیر q میخوام که:q=[0.4 0.5 0.6];
                نمیدونم مشکل شاید تو تعریف متغیرهام باشه، یه راهنمایی کنید لطفا.ممنون
                زندگی زنگ تفریحی است کوتاه
                بچه ها زنگ بعد حساب داریم

                دیدگاه


                  #9
                  پاسخ : طریقه رسم نمودار در نرم افزار matlab

                  سلام
                  از دستور plot استفاده کنید.
                  plot(x,y)
                  شما باید به جای عبارت q از عبارت q(i) استفاده کنید و i رو از یک تا 3 در یک حلقه قرار دهید.
                  و برای اینکه سه نمودار در یک محور قرار بگیرند، بعد از دستور plot از دستور hold on استفاده کنید

                  دیدگاه


                    #10
                    پاسخ : طریقه رسم نمودار در نرم افزار matlab

                    خیلی ممنون از جوابتون :job:
                    q(i) رو متوجه نشدم چه جور تعریف کنم ممکنه کمی توضیح بدید :redface:
                    یعنی دیگه برای متغیر q نباید ماتریس بنویسم؟ :read:
                    زندگی زنگ تفریحی است کوتاه
                    بچه ها زنگ بعد حساب داریم

                    دیدگاه


                      #11
                      پاسخ : طریقه رسم نمودار در نرم افزار matlab

                      سلام
                      چرا q رو همونجوری که به شکل ماتریسی نوشته اید قبل از حلقه for تعریف کنید
                      اما داخل حلقه for در اونجایی که فرمول محاسبه Y رو نوشتین از عبارت q(i) استفاده کنین. به این ترتیب y به اندازه تعداد عناصر q محاسبه میشه و هر بار میتونین نمودارشو بر حسب x رسم کنین
                      کد:
                      x=[0.48 0.53 0.64 0.72 0.74 0.76];
                      q=[0.4 0.5 0.6];
                      for i=1:length(q)
                        y = (x+q(i)*(1-x))./(x/20.0)+q(i)*(1-x);
                        plot(x,y)
                        hold on
                      end

                      دیدگاه

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