اطلاعیه

Collapse
No announcement yet.

راهنمایی در برنامه متلب

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

    راهنمایی در برنامه متلب

    سلام
    اول برنامه رو میزارم بعد سوالتمو میپرسم

    کد:
    % Poles and zeros, frequency response
    %
    %
    c1 = 1e-7; c2 = 1e-3; r1 = 10e3; r2 = 10;
    % poles and zeros
    b1 = c2*r2;
    a1 = c1*r1;
    num = [b1 1];
    den = [a1 1];
    disp('the zero is')
    z = roots(num)
    disp('the poles are')
    p = roots(den)
    % the frequency response
    w = logspace(-2,6);
    h = freqs(num,den,w);
    gain = 20*log10(abs(h));
    f = w/(2*pi);
    phase = angle(h)*180/pi;
    subplot(211),semilogx(f,gain,'w');
    xlabel('Frequency, Hz')
    ylabel('Gain, dB')
    axis([1.0e-2,1.0e6,0,22])
    text(2.0e-2,15,'Magnitude Response')
    subplot(212),semilogx(f,phase,'w')
    xlabel('Frequency, Hz')
    ylabel('Phase')
    axis([1.0e-2,1.0e6,0,75])
    text(2.0e-2,60,'Phase Response')
    diary

    1-b1 , a1 مقدار قطب و صفر هستند ؟
    2-چرا مقدار قطب وصفر توی ماتریس گذاشته شده ؟(درایه 1 برا چیه ؟)
    3-قسمت فرکانس رو هم که متوجه نشدم ؟
    با این سوالات معلومه که هیچی متوجه نشدم :rolleyes:
    چه يافت آنــکه تــو را گم کرد وچه گم کرد آنـکه تــو را يافت.

    #2
    پاسخ : راهنمایی در برنامه متلب

    یا ایها ال ECA
    چه يافت آنــکه تــو را گم کرد وچه گم کرد آنـکه تــو را يافت.

    دیدگاه


      #3
      پاسخ : راهنمایی در برنامه متلب

      خوب داداش من ما که علم غیب نداریم oo: اول بگو میخای چیکار کنی و این برنامه قراره چه کاری انجام بده بعد اشکالت رو بگو ببینیم چطوری میشه رفعش کرد. : :angry: :angry:

      دیدگاه


        #4
        پاسخ : راهنمایی در برنامه متلب

        برنامه از این قراره که :
        گفته صفر وقطب رو بدست آورید و پاسخ بهره و فاز رو رسم کنید.


        و



        و نهایتا خروجی برنامه

        چه يافت آنــکه تــو را گم کرد وچه گم کرد آنـکه تــو را يافت.

        دیدگاه


          #5
          پاسخ : راهنمایی در برنامه متلب

          سلام
          با توجه به کد b1 مقدار صفر و a1 مقدار قطب است. یک را واسه این گذاشته چون تو محاسبه صفر و قطب از دستور roots استفاده کرده. در واقع اول با دستور num = [b1 1]; چند جمله ای b1*S+1 را درست کرده و سپس با استفاده از دستور roots ریشه این چند جمله ای که برابر S=-1/b1 را بدست آورده و تو متغیر z ذخیره کرده.

          دیدگاه


            #6
            پاسخ : راهنمایی در برنامه متلب

            نوشته اصلی توسط alitajari
            سلام
            با توجه به کد b1 مقدار صفر و a1 مقدار قطب است. یک را واسه این گذاشته چون تو محاسبه صفر و قطب از دستور roots استفاده کرده. در واقع اول با دستور num = [b1 1]; چند جمله ای b1*S+1 را درست کرده و سپس با استفاده از دستور roots ریشه این چند جمله ای که برابر S=-1/b1 را بدست آورده و تو متغیر z ذخیره کرده.
            سلام
            ببخشید این چن جمله ای رو نفهمیدم :mrgreen: میشه قسمت فرکانس رو هم توضیح بدین
            این یه فیلتر میان گذره ؟
            چه يافت آنــکه تــو را گم کرد وچه گم کرد آنـکه تــو را يافت.

            دیدگاه


              #7
              پاسخ : راهنمایی در برنامه متلب

              یه سوال!!!!
              چرا تو برنامه رنگ نودار رو گذاشتی سفید بکشه؟؟؟
              semilogx(f,gain,'w'

              واسه اینکه کسی نبینه نمودار رو؟؟؟؟؟؟؟؟!!!!!!!!!!!!!!!!

              دیدگاه


                #8
                پاسخ : راهنمایی در برنامه متلب

                نوشته اصلی توسط alitajari
                یه سوال!!!!
                چرا تو برنامه رنگ نودار رو گذاشتی سفید بکشه؟؟؟
                semilogx(f,gain,'w'

                واسه اینکه کسی نبینه نمودار رو؟؟؟؟؟؟؟؟!!!!!!!!!!!!!!!!
                نه بجان خودم پس w مال اونه :eek:
                من متلب نمیدونم چون کداش شبیه سی هست یکم حالیم میشه.اینو مستقیم از کتاب "ELECTRONICS and CIRCUIT ANALYSIS using MATLAB"کپی پیست کردم.
                چه يافت آنــکه تــو را گم کرد وچه گم کرد آنـکه تــو را يافت.

                دیدگاه


                  #9
                  پاسخ : راهنمایی در برنامه متلب

                  دستور roots ریشه چند جمله ای را بدست میاره. پس برای اینکه ریشه را بدست بیاری باید ابتدا چند جمله ای رو بسازی. تو MATLAB برای ساخت چند جمله ای ضرایب چند جمله ای رو توی یه بردار قرار میدن. مثلاً [1,2,3,4] معادل چند جمله ای s^3+2s^2+3s+4 است. چون صفر و قطب ریشه چند جمله ای صورت و مخرج است، پس باید با دستور roots صفر و قطب را بدست بیاری.

                  در مورد قسمت فرکانس هم دستور کلیدی همون freqs(num,den,w) هست که مقادیر پاسخ فرکانسی فیلتری با چند جمله ای صورت num و چند جمله ای مخرج den را در فرکانس های W بعنوان خروجی می ده.

                  دیدگاه


                    #10
                    پاسخ : راهنمایی در برنامه متلب

                    علی آقا ببخشید منظورم از این خط به بعد بود % the frequency response
                    میشه تک تک خط هارو توضیح بدین شرمندم بخدا اینو باید به استاد بدم
                    چه يافت آنــکه تــو را گم کرد وچه گم کرد آنـکه تــو را يافت.

                    دیدگاه


                      #11
                      پاسخ : راهنمایی در برنامه متلب

                      بیا بالا :cry:
                      چه يافت آنــکه تــو را گم کرد وچه گم کرد آنـکه تــو را يافت.

                      دیدگاه


                        #12
                        پاسخ : راهنمایی در برنامه متلب

                        w = logspace(-2,6)

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

                        h = freqs(num,den,w)

                        پاسخ فرکانسی فیلتر هست.در واقع اینجا پاسخ فرکانسی رو بدست اورده.

                        gain = 20*log10(abs(h));
                        f = w/(2*pi);
                        phase = angle(h)*180/pi;

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

                        subplot(211),semilogx(f,gain,'w'
                        رسم نمودار هست.اگر بخوایم چند تا نمودار رو توی یک صفحه رسم کنیم از دستور subplot استفاده میکنیم.

                        xlabel('Frequency, Hz&#039

                        محور x ها رو نام گذاری کرده

                        ylabel('Gain, dB&#039

                        محور y ها رو نام گذاری کرده

                        axis([1.0e-2,1.0e6,0,22])

                        درجه بندی محور

                        text(2.0e-2,15,'Magnitude Response&#039

                        نام گذاری نمودار هست

                        subplot(212),semilogx(f,phase,'w&#039
                        xlabel('Frequency, Hz&#039
                        ylabel('Phase&#039
                        axis([1.0e-2,1.0e6,0,75])
                        text(2.0e-2,60,'Phase Response&#039

                        اینها هم دقیقا مثل حالت قبل هست

                        diary
                        این رو دقیقا نمیدونم چیه فقط خیلی کلی میدونم خروجی ASCI داره و همه فرایند رو تو یه فایل سیو میکنه نهایتا.
                        فقر ، شب را " بي غذا " سر كردن نيست ................ فقر ، روز را " بي انديشه" سر كردن است

                        دیدگاه


                          #13
                          پاسخ : راهنمایی در برنامه متلب

                          یه دنیا ممنون
                          فقط همین کد
                          gain = 20*log10(abs(h));
                          f = w/(2*pi);
                          phase = angle(h)*180/pi;
                          و تاثیراتشون تو تابع فرکانس چجوریاست ؟
                          من کنترل نداشتم ببخشید
                          ----
                          همین امتحانات تموم بشه میرم این مطلب رو یاد میگیرم بخدا :angry:
                          چه يافت آنــکه تــو را گم کرد وچه گم کرد آنـکه تــو را يافت.

                          دیدگاه


                            #14
                            پاسخ : راهنمایی در برنامه متلب

                            یه کلیت تو ذهنم هست راجع به اینها.......

                            مربوط میشن به فاز و بهره تابع تبدیل.هر تابع تبدیل یه فاز داره و یه اندازه که از طریق فرمول اول اندازه اش بدست اومده و از طریق فرمول دوم بهره اش.در واقع دقیقا اومده بهره و فاز تابع تبدیل رو محاسبه کرده و رسمش کرده
                            فقر ، شب را " بي غذا " سر كردن نيست ................ فقر ، روز را " بي انديشه" سر كردن است

                            دیدگاه


                              #15
                              پاسخ : راهنمایی در برنامه متلب

                              یه چیزی برام خیلی جالبه با اینکه شما کنترل نداشتید و متلب رو بنا به گفته ی خودتون خیلی آشنایی ندارید چه جوری دارید با این چیزا سروکله میزنید. واقعا برام سواله اگه جواب بدید ممنون میشم. مثلا من متلب رو نمیدونم حتی دورش هم نمیرم که خیلی از این بابت ضربه خوردم شاید اگه باهاش درگیر میشدم یادش میگرفتم. این کار شما رو خیلی دوست دارم.
                              نوشته اصلی توسط صادق ابراهیمی
                              این یه فیلتر میان گذره ؟
                              خیر. از روی نمودار اندازه باید بگید نه نمودار فاز. نمودار اندازه داره نشون میده که یه فیلتر بالاگذره.
                              نوشته اصلی توسط صادق ابراهیمی
                              فقط همین کد
                              gain = 20*log10(abs(h));
                              f = w/(2*pi);
                              phase = angle(h)*180/pi;
                              و تاثیراتشون تو تابع فرکانس چجوریاست ؟
                              من کنترل نداشتم ببخشید
                              بدست آوردن پاسخ فرکانسی یعنی بدست آوردن "اندازه ی فاز - gain" و "زاویه ی فاز - phase"
                              20log برای این هست که مقدار برحسب دسی بل dB بدست بیاد اگه اون رو نذارید مقداری که بدست میاد بدون واحد هست
                              abs(H) هم یعنی اندازه تابع تبدیل یا همون گین. absolute value یعنی قدرمطلق. H هم تابع تبدیل هست
                              phase = angle(h)*180/pi این هم میخواد w امگا یا فرکانس زاویه ای که بر حسب rad/s هست رو به درجه تبدیل کنه. میدونیم : w/pi = deg/180
                              پس فاز بر حسب درجه شده : angle*180/pi
                              HELLO WORLD

                              دیدگاه

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