اطلاعیه

Collapse
No announcement yet.

کمک برای طراحی فیلتر در متلب

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

    کمک برای طراحی فیلتر در متلب

    سلام
    استاد مدارمون گفته سه تا فیلتر پایین گذر-بالا گذر-و میان گذر با هرفرکانسی که خاستین طراحی کنین .چار شنبه هم باید تحویل بدم.منم هیچی از این متلب نمیدونم.دوستان لطف میکنن این کارو واسه من انجام بدن البته تو محیط سیمولینک نگفته (گفته کدنویسی در متلب)
    یه سوال:برا اینکه این متلب رو یاد بگیرم کتاب چی بخونم که بدردم بخوره (تو الکترونیک )
    مخلصیم به مولا
    چه يافت آنــکه تــو را گم کرد وچه گم کرد آنـکه تــو را يافت.

    #2
    پاسخ : کمک برای طراحی فیلتر در متلب

    اگه انگلیسیت خوبه که هلپ خوده متلب بهترین منبعه کامل و جامع با مثال و همه چی اگرم منبع فارسی میخای تواینترنت زیاد هست کتابای مثلث نارنجی (انتشارات آفرنگ) هم عالیه

    دیدگاه


      #3
      پاسخ : کمک برای طراحی فیلتر در متلب

      یعنی هیچ کس نیست ؟
      چن وقتی هس هرچی پست میزنم کسی جواب نمیده :angry:
      چه يافت آنــکه تــو را گم کرد وچه گم کرد آنـکه تــو را يافت.

      دیدگاه


        #4
        پاسخ : کمک برای طراحی فیلتر در متلب

        سلام

        راستش من یه سری کد قبلا حدودا یکسال پیش نوشتم که فیلتر FIR و IIR با متد windowing هست.خیلی حضور ذهن ندارم که چی بودن و چیکار کردم و با توجه به اطلاعاتی که توی کامنت هاش گذاشتم Elliptic prototype و butterworth prototype و... هست!

        اگر بدردتون میخوره کدهاشو بذارم واستون.
        فقر ، شب را " بي غذا " سر كردن نيست ................ فقر ، روز را " بي انديشه" سر كردن است

        دیدگاه


          #5
          پاسخ : کمک برای طراحی فیلتر در متلب

          سلام بر شما ..

          فایل های زیر میتونن کمکتون کنن تا با برنامه نویسی در محیط MATLAB کاملا خوب آشنا بشید .. امیدوارم این فایل ها براتون مفید باشن .. موفق و سلامت و شاد باشید ..

          http://www.eca.ir/forum2/index.php?t...3013#msg163013

          نوشته اصلی توسط صادق ابراهیمی

          یه سوال:برا اینکه این متلب رو یاد بگیرم کتاب چی بخونم که بدردم بخوره (تو الکترونیک )
          دوستان! مدتی کمتر به سایت میام ..

          دیدگاه


            #6
            پاسخ : کمک برای طراحی فیلتر در متلب

            نوشته اصلی توسط (فرشته)
            سلام

            راستش من یه سری کد قبلا حدودا یکسال پیش نوشتم که فیلتر FIR و IIR با متد windowing هست.خیلی حضور ذهن ندارم که چی بودن و چیکار کردم و با توجه به اطلاعاتی که توی کامنت هاش گذاشتم Elliptic prototype و butterworth prototype و... هست!

            اگر بدردتون میخوره کدهاشو بذارم واستون.
            سلام به همه
            نه منظورم فیلتر های RCL بود
            بازم ممنون
            مشکل من طراحی روی کاغذ نیست.مشکل اینجاست که نمیدونم چطور اینها رو توی متلب وارد کنم .
            چه يافت آنــکه تــو را گم کرد وچه گم کرد آنـکه تــو را يافت.

            دیدگاه


              #7
              پاسخ : کمک برای طراحی فیلتر در متلب

              سلام بر شما ..

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

              Bandfilters
              http://www.mediafire.com/view/?7t01p0lp401uuek

              MATLAB_Sample_Codes
              http://www.mediafire.com/view/?vyf7621j44qv3ak
              دوستان! مدتی کمتر به سایت میام ..

              دیدگاه


                #8
                پاسخ : کمک برای طراحی فیلتر در متلب

                سلام
                دوستان خوبم من به کمک فوری شما در خصوص طراحی فیلتر چبی شف در متلب نیازمندم

                دیدگاه


                  #9
                  پاسخ : کمک برای طراحی فیلتر در متلب

                  نوشته اصلی توسط zahaksabayi
                  سلام
                  دوستان خوبم من به کمک فوری شما در خصوص طراحی فیلتر چبی شف در متلب نیازمندم
                  سلام
                  دو مورد را باید توجه کنی:
                  1: طراحی فیلتر
                  2: پیاده سازی در متلب

                  خب برای قسمت اول باید پارامترها رو مشخص کنی
                  هر فیلتر میتونه از 1 تا n تا پارامتر داشته باشه
                  هرچی پارامترهای درخواستی بیشتر بشه
                  معمولا مرتبه فیلتر بالاتر میره
                  فیلترهایی هم مانند چبیشف رابطه دارن
                  و معمولا یک فیلتر پایین گذر طراحی میکنن
                  بعدش به فیلتر مورد نظر تبدیل میکنن
                  لینک زیر هم در مورد چبیشفه:
                  Chebyshev filter

                  در مورد پیاده سازی در متلب عبارت زیر رو گوگل کن:
                  کد:
                  chebyshev filter design matlab program
                  ...
                  :read:
                  1: اللهم صل علي محمد و آل محمد و عجل فرجهم و ...
                  2: دانش بهتره يا ثروت؟ بدون شعور هيچکدوم!
                  3: دلا معاش چنان کن که گر بلغزد پاي *** فرشته‌ات به دو دست دعا نگه دارد (حافظ)

                  دیدگاه


                    #10
                    پاسخ : کمک برای طراحی فیلتر در متلب

                    نوشته اصلی توسط zahaksabayi
                    سلام
                    دوستان خوبم من به کمک فوری شما در خصوص طراحی فیلتر چبی شف در متلب نیازمندم
                    ابزار fdatoll متلب پارامترهای فیلتر رو میگیره و ضرایب رو به عنوان خروجی میده. انواع فیلترهای FIR و IIR رو برای شبیه سازی و یا پیاده سازی دیجیتال میتونی باهاش طراحی کنی.
                    لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
                    لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
                    با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
                    اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
                    يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

                    دیدگاه


                      #11
                      پاسخ : کمک برای طراحی فیلتر در متلب

                      ino parsal neveshtam,dar morede filteraye low passe.omidvaram be karet biad.
                      کد:
                      % Date      Programmer      Description Of Code
                      % ======     ==========      ==================
                      % Unknown     Priest(E.F)     Original Code
                      clc
                      clear all
                      close all
                      format short
                      syms x;
                      %% Section#0:
                      Menu=[
                      '             Welcome To Matlab Programme For Synthesis A LowPass Filter With'
                      '             Invert-ChebyShev & ChebyShev & ButterWorth Approximation    '
                      '                                             '
                      '                                             '
                      '                                             '
                      'Approximation Type       |       Select                   '
                      '-------------------------------|-------------------                   '
                      'ChebyShev           |        1                    '
                      'Invert-ChebyShev        |        2                    '
                      'ButterWorth          |        3                    '
                      'Exit              |        0                    '];
                      disp(Menu); 
                      Select=-1;
                      while Select~=1 && Select~=2 && Select~=3 && Select~=0
                        Select=input('Select Number Of Menu:');
                        if Select~=1 && Select~=2 && Select~=3 && Select~=0
                          disp('Enter 1, 2 ,3 Or 0');       
                        end
                      end
                      clc
                      if Select==0
                        return
                      end
                      Amin=input('Please Enter Amin In dB:\nAmin(dB)=');
                      Amax=input('Please Enter Amax In dB:\nAmax(dB)=');
                      Fs=input('Please Enter The StopBand Frequency(KHz):\nFs(KHz)=');
                      Fp=input('Please Enter The PassBand Frequency(KHz):\nFp(KHz)=');
                      if Select==1
                        disp('So,You Choose ChebyShev Methode');
                        %% Section#1:Basic Calculations:
                        Nc=ceil((acosh(sqrt((power(10,0.1*Amin)-1)/(power(10,0.1*Amax)-1))))/(acosh(Fs/Fp)));
                        epsilon=sqrt(power(10,0.1*Amax)-1);
                        %% Section#2:Poles Calculations:
                        Delta=zeros(1,Nc);
                        Omega=zeros(1,Nc);
                        Poles=zeros(1,Nc);
                        Alpha=(1/Nc)*asinh(1/epsilon);
                        for k=1:Nc
                          Delta(k)=-sin(((2*k-1)*pi)/(2*Nc))*sinh(Alpha);
                          Omega(k)=cos(((2*k-1)*pi)/(2*Nc))*cosh(Alpha);
                          Poles(k)=complex(Delta(k),Omega(k));
                        end
                        %% Section#3:Attenuation Calculations:
                        Coefficients=cell(1,Nc);
                        for o=1:Nc
                          Coefficients(o)={poly(Poles(o))};
                        end
                        Constant=1;
                        for m=1:Nc
                          Constant=conv(Constant,Coefficients{1,m});
                        end
                        Num=1;
                        Coefficients_Attenuation=Constant;
                        Coefficients_Attenuation=epsilon*power(2,Nc-1)*Coefficients_Attenuation;
                        [Numerator,Denominator]=lp2lp(Num,Coefficients_Attenuation,2*pi*Fp*1e3);
                        Denominator=real(Denominator);
                        disp('Transfer Function For ChebyShev Approximation:' );
                        ChebyShev_TransferFunction=tf(Numerator,Denominator)
                        R=bodeplot(1/ChebyShev_TransferFunction,'r');
                        Opt=getoptions(R);
                        Opt.YLabel.String(1)={'Attenuation'};
                        setoptions(R,Opt);
                        setoptions(R,'PhaseVisible','off','FreqUnits','kHz','FreqScale','linear');
                        xlim([0,100]);
                        title('Frequency Response Of Inverse-ChebyShev');
                        grid minor;
                        gtext('Priest Programming','FontSize',20);
                      elseif Select==2
                        disp('So,You Choose Invert-ChebyShev Methode');
                        Nc=ceil((acosh(sqrt((power(10,0.1*Amin)-1)/(power(10,0.1*Amax)-1))))/(acosh(Fs/Fp)));
                        epsilon=sqrt(power(10,0.1*Amax)-1);
                        %% Section#4:Convert ChebyShev To Invert ChebyShev:
                        T=sym('x%d%d',[1,Nc+1]);
                        T(1)=1;
                        T(2)=x;
                        for k=3:Nc+1
                          T(k)=2*x*T(k-1)-T(k-2);
                        end
                        expand(T(end));
                        Answer=(power(10,0.1*Amin)-1)/(epsilon^2);
                        Cheb=T(end).^2;
                        Omega_A=max(abs(double(solve(Cheb-Answer,x))));
                        E=double(1/(epsilon*subs(T(end),x,Omega_A)));
                        DeltaI=zeros(1,Nc);
                        OmegaI=zeros(1,Nc);
                        PolesI=zeros(1,Nc);
                        Zero=zeros(1,Nc);
                        AlphaI=(1/Nc)*asinh(1/E);
                        for k=1:Nc
                          DeltaI(k)=-sin(((2*k-1)*pi)/(2*Nc))*sinh(AlphaI);
                          OmegaI(k)=cos(((2*k-1)*pi)/(2*Nc))*cosh(AlphaI);
                          PolesI(k)=complex(DeltaI(k),OmegaI(k));
                          Zero(k)=(1j*Omega_A)/(cos(((2*k-1)*pi)/(2*Nc)));
                        end
                        FinallPoles=Omega_A./PolesI;
                        NumeratorI=poly(Zero);
                        DenominatorI=poly(FinallPoles);
                        DenominatorI=real(DenominatorI);
                        [NumeratorI,DenominatorI]=lp2lp(NumeratorI,DenominatorI,2*pi*Fp*1e3);
                        %% Section#5:Calculating TransferFunction Value @ Zero:
                        Vent=subs(poly2sym(DenominatorI),x,0);
                        Numerator_Value=subs(poly2sym(NumeratorI),x,0);
                        Transfer_Function=double(Numerator_Value/Vent);
                        %% Final Section:
                        disp('Transfer Function For Invert-ChebyShev Approximation:' );
                        Invert_ChebyShev_TransferFunction=tf(NumeratorI,DenominatorI)/Transfer_Function
                        R=bodeplot(1/Invert_ChebyShev_TransferFunction,'r');
                        Opt=getoptions(R);
                        Opt.YLabel.String(1)={'Attenuation'};
                        setoptions(R,Opt);
                        setoptions(R,'PhaseVisible','off','FreqUnits','kHz','FreqScale','linear' );
                        xlim([0,100]);
                        title('Frequency Response Of Inverse-ChebyShev');
                        grid minor;
                        gtext('Priest Programming','FontSize',20);
                      elseif Select==3
                        disp('So,You Choose ButterWorth Methode');
                        epsilon=sqrt(power(10,0.1*Amax)-1);
                        N=ceil((log10((power(10,0.1*Amin)-1)/(power(10,0.1*Amax)-1)))/(2*log10(Fs/Fp)));
                        p=zeros(1,2*N);
                        if epsilon==1
                          for k=1:2*N
                            p(k)=1i*exp(1i*((pi/(2*N))+((k-1)*pi)/N));
                          end
                          poles=double(p(1:N));
                          P=poly(poles);
                          P=real(P);
                          Numerator=1;
                          Main_Denominator=P;
                        else
                          for k=1:2*N
                            p(k)=1i*exp(1i*((pi/(2*N))+((k-1)*pi)/N));
                          end
                          poles=double(p(1:N));
                          P=poly(poles);
                          P=real(P);
                          Denominator=poly2sym(P,x);
                          Denominator1=subs(Denominator,x,nthroot(epsilon,N)*x);
                          Denominator2=sym2poly(Denominator1);
                          Main_Denominator=Denominator2;
                          Numerator=1;
                        end
                        [NumeratorI,DenominatorI]=lp2lp(Numerator,Main_Denominator,2*pi*Fp*1e3);
                        display('Transfer Function For ButterWorth Approximation:');
                        Hs=tf(NumeratorI,DenominatorI)
                        R=bodeplot(1/Hs,'r');
                        Opt=getoptions(R);
                        setoptions(R,Opt);
                        Opt.YLabel.String(1)={'Attenuation'};
                        setoptions(R,'PhaseVisible','off','FreqUnits','kHz','FreqScale','linear' );
                        xlim([0,100]);
                        title('Frequency Response Of ButterWorth');
                        grid minor;
                        gtext('Priest Programming','FontSize',20);
                      end
                      
                      % ========================================================================================================================================================================================================================
                      % ========================================================================================================================================================================================================================
                      %             || Author:Priest||
                      %             ||Email:ehsan_faal@yahoo.com||
                      We Stand Up To The End

                      دیدگاه

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