اطلاعیه

Collapse
No announcement yet.

ساخت موج سینوسی با فرکانس 10 هرتز

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

    ساخت موج سینوسی با فرکانس 10 هرتز

    سلام .
    دوستان شاید سوالم خیلی ساده باشه ولی میخوام یک موج سینوسی با فرکانس 10 هرتز توی متلب بسازم کسی میتونه دستوراتشو برام بنویسه
    مرسی :biggrin:

    #2
    پاسخ : ساخت موج سینوسی با فرکانس 10 هرتز

    درود

    f = 10;
    t = 0:1/f/20:1/f*5;
    s = sin (2*pi*f*t);
    figure; plot(t,s)
    مـن هیچ ندانم که مرا آن که سرشت
    از اهل بهشت کرد یا دوزخ زشت
    جامی و بتی و بربطی بر لب کشت
    اين هر سه مرا نقد و تو را نسیه بهشت

    دیدگاه


      #3
      پاسخ : ساخت موج سینوسی با فرکانس 10 هرتز

      مرسی از جوابتون .
      مبنای نوشتن قسمت t چیه .
      میشه یه الگوریتم یا توضیح بفرمایید که برای ساخت هر موج سینوسی با هر فرکانسی پله به پله باید چکار کرد
      متشکرم

      دیدگاه


        #4
        پاسخ : ساخت موج سینوسی با فرکانس 10 هرتز

        سلام
        برای کشیدن یک موج سینوسی اولین کاری که باید انجام بدید اینه که بردار زمان t را تعریف کنید. در تعیین بردار زمان باید سه چیز معلوم شود:
        اول: زمان شروع موج که معمولاً صفر در نظر گرفته میشود
        دوم: فاصله زمانی میان دو نقطه یا dt
        سوم: زمان پایان موج t_end
        اکنون میتوان بردار زمان را به شکل زیر نوشت:
        t =0 : dt : t_end;

        تعیین dt:
        اول باید تعیین کنید که MATLAB در هر دوره تناوب چند نقطه بکشد؟ معمولا 10 نقطه کافی است تا موج کشیده شده سینوسی دیده شود. فرض کنید اگر تنها 5 نقطه کشیده شود، منحنی حاصل هیچ شباهتی به سینوسی نخواهد داشت. اگر 20 نقطه باشد، منحنی به سینوسی نزدیکتر است. اگر 100 نقطه باشد که بسیار نزدیکتر خواهد بود. انتخاب اینکه چند نقطه در هر دوره تناوب باشد سلیقه ای است ولی بهتر است حداقل 10 تا باشد. فرض میکنیم که شما عدد n را انتخاب کرده اید. فرکانس موج شما f است یعنی در هر ثانیه f دوره تناوب وجود دارد. بنابراین شما در هر ثانیه باید n*f نقطه داشته باشید. پس فاصله میان دو نقطه برابر است با معکوس n*f یا
        dt = 1/(n*f)

        تعیین t_end:
        میخواهید موج شما در چند دوره تناوب رسم شود؟ یک دوره؟ دو دوره؟ فرض کنید میخواهید P دوره تکرار شود. زمان هر دوره برابر است با معکوس فرکانس. بنابراین زمان کل برابر خواهد بود با:
        t_end = P/f


        بنابراین t به شکل زیر نوشته میشود:
        t = 0 : 1/(n*f) : (P/f)
        در مثالی که marychi آورده است n برابر 20 و P برابر 5 انتخاب شده است . پس کد مزبور در هر سیکل 20 نقطه میکشد و جمعاً 5 سیکل را نمایش میدهد.

        دیدگاه


          #5
          پاسخ : ساخت موج سینوسی با فرکانس 10 هرتز

          مرسی . خیلی عالی بود .
          دستتون درد نکنه

          دیدگاه


            #6
            پاسخ : ساخت موج سینوسی با فرکانس 10 هرتز

            سلام .
            دوستان من این برنامه رو نوشتم برای تولید یک موج سینوسی 5 هرتز و 15 هرتز ولی متاسفانه وقتی تبدیل فوریه می گیرم اون فرکانس رو نشون نمیده میشه راهنمایی کنید کارم کجاش اشتباست. میخوام دو تا فرکانس توی یک شکل باشن


            clear
            close all
            f = 5;
            t = 0:1/(f*20):10/5;
            s = sin (2*pi*f*t);
            plot(t,s)
            axis([0 5 -1.1 1.1])
            f = 15;
            t = 2:1/(f*20):20/5;
            s = sin (2*pi*f*t);
            hold on ,plot(t,s)
            ft=fft(s);
            fft=abs(ft);
            figure,plot(fft)
            axis([-1 500 0 400])

            دیدگاه


              #7
              پاسخ : ساخت موج سینوسی با فرکانس 10 هرتز

              سلام
              ظاهرا یک سیگنال دارید که تا دو ثانیه اول فرکانسی برابر 5 و بعد از آن فرکانسی برابر 15 دارد.
              تعیین dt
              در تعیین dt فرکانس بالاتر را باید در نظر گرفت. چون در این صورت در مورد فرکانس پایین تر هم جواب خواهد داد. پس: dt = 1/15/20
              تعیین t_end برای سیگنال اول
              که دو ثانیه است
              تعیین t_end برای سیگنال دوم
              که 4 ثانیه است
              اکنون میتوان نوشت:
              کد:
              clear
              close all
              f1 = 5;%Hz
              f2 = 15;%Hz
              dt = 1/15/20;%sec
              t1 = 0:dt:2;%sec
              t2 = 2:dt:4;%sec
              s1 = sin (2*pi*f1*t1);
              s2 = sin (2*pi*f2*t2);
              s = [s1 s2];
              t = [t1 t2];
              hold on ,plot(t,s)
              برای تبدیل فوریه با دستور fft لازم است یک محور فرکانس بسازید(برای رسم در حوزه زمان یک محور زمان میسازید و برای رسم در حوزه فرکانس هم باید یک محور فرکانس بسازید که در اینجا f است)
              کد:
              p = nextpow2(length(s));
              nfft = 2^p;
              S = fft(s,nfft);
              S = S(1:nfft/2+1);
              S = abs(S);
              figure
              fs = 1/dt;
              df = fs/nfft;
              f = 0:df:fs/2;
              plot(f,S);
              منظور از nfft تعداد نقاط fft است که دستور fft محاسبه میکند و توصیه شده است که این عدد اولا توانی از 2 باشد تا سرعت اجرای دستور بالا رود و دوم اینکه بزرگتر از تعداد اعضای s باشد. دو خط اول برنامه بالا همین کار را انجام میدهد. برای مثال اگر تعداد اعضای s برابر 500 باشد، آنگاه nfft برابر 512 خواهد بود که هم از 500 بزرگتر است و هم توانی از 2 است
              اما منظور از عبارت زیر چیست؟
              کد:
              S = S(1:nfft/2+1);
              اگر یادتان باشد، تبدیل فوریه نسبت به محور عمودی متقارن بود. بنابراین نیمی از S تکراری است و بکارمان نمیآید. بنابراین آن را حذف میکنیم.

              دیدگاه


                #8
                پاسخ : ساخت موج سینوسی با فرکانس 10 هرتز

                مرسی از لطفتون . منظور از 1/15/20 چیه و طبق چه روشی باید این طوری عمل کرد . استانداردی داره ؟ مثلا اگه بخوایم سیگنال 50 و 100 هرتزی بسازیم چی باید نوشت . و چرا باید دو بار این اعداد رو بر هم تقسیم کرد ؟ (1/15/20)
                کلا منطق ساخت dt چیه ؟

                دیدگاه


                  #9
                  پاسخ : ساخت موج سینوسی با فرکانس 10 هرتز

                  سلام
                  یکیش فرکانسه
                  یکی دیگه هم تعداد نقاطی است که میخواهید در یک دوره تناوب محاسبه شود و هر چه بیشتر باشد بهتره (ولی حجم محاسباتو زیاد میکنه)
                  خودتون حالتهای مختلف رو امتحان کنید. مثلا یکبار به جای 20 عدد 5 رو انتخاب کنید، خواهید دید که منحنی دیگه سینوسی نیست و بیشتر شبیه چند پاره خط متصل به همه. یکبار هم به جای 20 عدد 200 رو انتخاب کنید و ببینید که سینوسی چقدر واقعی به نظر میاد حتی وقتی اون رو زوم میکنید باز هم به شکل سینوسی باقی میمونه

                  دیدگاه


                    #10
                    پاسخ : ساخت موج سینوسی با فرکانس 10 هرتز

                    اگه یه matrix داشته باشم که مقادیرش بین 0 تا 5 متغیر باشه آیا میآ‌تونم سیگنالی که از این مقادیر تولید میآ‌شه رو با کمک مطلب رسم کنم؟

                    دیدگاه


                      #11
                      پاسخ : ساخت موج سینوسی با فرکانس 10 هرتز

                      مرسی از پاسختون .
                      ولی چرا این 3 تا عدد بر هم تقسیک شدند؟

                      دیدگاه


                        #12
                        پاسخ : ساخت موج سینوسی با فرکانس 10 هرتز

                        دوستان چرا این سیگنال سینوسی با نویز رو نمی تونم با هم جمع کنم ؟
                        ارور میده
                        [ltr]
                        clear
                        close all
                        fs = 10;%Hz
                        t = -0.1:.001:0.5;
                        x = sin(2*pi*fs*t);
                        d = rand(1,100);
                        s = x+d;
                        subplot(2,2,1),plot(x)
                        subplot(2,2,2),plot(d)
                        subplot(2,2,3),plot(s

                        دیدگاه


                          #13
                          پاسخ : ساخت موج سینوسی با فرکانس 10 هرتز

                          درود
                          طول هر دو باید یکی باشه. اینطوری بنویس:
                          d = rand(1,601);
                          یا بهترش:
                          d = rand(size(x));
                          مـن هیچ ندانم که مرا آن که سرشت
                          از اهل بهشت کرد یا دوزخ زشت
                          جامی و بتی و بربطی بر لب کشت
                          اين هر سه مرا نقد و تو را نسیه بهشت

                          دیدگاه


                            #14
                            پاسخ : ساخت موج سینوسی با فرکانس 10 هرتز

                            سلام
                            من یک نویز سینوسی میخوام
                            کد اینه ولی میگه سایز ماتریسات در نیست
                            میخوام به یک عکس نویز سینوسی اعمال کنم
                            مشکل کجاست؟
                            ممنون
                            کد:
                            lena=imread ('BandW.bmp');
                            figure ; 
                            imshow(lena)
                            lena=double(lena)
                            [m,n] = size (lena);
                            [m,n]
                            X= repmat ([1:n] / n, [m,1]);
                            X
                            Y= repmat([n,1], [1:m]/m);
                            Y
                            h = sin((5*pi*X)+(7*pi*Y))
                            lenan =lena + h
                            figure ; 
                            imshow(h)

                            "نخواستم موضوع جدید ایجاد کنم"
                            آنان که خاک را به نـــــظر کیمیا کنند
                            آیا بود که گوشه چشمی به ما کنند

                            دیدگاه


                              #15
                              پاسخ : ساخت موج سینوسی با فرکانس 10 هرتز

                              [m,n] = size (lena);
                              [m,n]
                              X= repmat ([1:n] / n, [m,1]);
                              Y= repmat([1:m]/m,[n,1])';
                              h = sin((5*pi*X)+(7*pi*Y));
                              lenan2 =lena + h;
                              figure ;
                              imshow(lenan2/256)
                              مـن هیچ ندانم که مرا آن که سرشت
                              از اهل بهشت کرد یا دوزخ زشت
                              جامی و بتی و بربطی بر لب کشت
                              اين هر سه مرا نقد و تو را نسیه بهشت

                              دیدگاه

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