اطلاعیه

Collapse
No announcement yet.

Signal Segmentation

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

    Signal Segmentation

    سلام دوستان
    من یک سیگنال صوتی دارم که با دستور load mtlb توی متلب ایجاد شده و تبدیل فوریه اون رو هم گرفتم .
    حالا میخوام این سیگنال رو به سگمنت های مختلف تقسیم کنم . یعنی اونجایی که فرکانس عوض میشه رو برام مشخص کنه .
    میشه راهنماییم کنید . در مورد سگمنت کردن یک سیگنال اطلاعات میخوام .
    مرسی



    #2
    پاسخ : Signal Segmentation

    دوستان کسی نیست راهنمایی کنه

    دیدگاه


      #3
      پاسخ : Signal Segmentation

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

      دیدگاه


        #4
        پاسخ : Signal Segmentation

        اصولا باید ویولت استفاده کنید
        ولی اگر فوریه با پنجره کوچکتر ه بگبربد و فوریه ها را با هم مقایسه کنید هم میشه یه کارایی کرد.
        { خلاف قوانین - پاک شد }

        دیدگاه


          #5
          پاسخ : Signal Segmentation

          خوب چطوری میشه این کارو کرد ؟
          این سیگنال به صورت ماتریس با یک ستون و مثلا هزار تا سطره . چطوری میشه این فرکانس ها رو جدا جدا کرد ؟
          مرسی

          دیدگاه


            #6
            پاسخ : Signal Segmentation

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

            دیدگاه


              #7
              پاسخ : Signal Segmentation

              با سلام .
              ببنید فرض کنید یک شکل سینوسی پیوسته داریم که 2 ثانیه اولش مثلا 5 هرتز و 2 ثانیه بعدیش مثلا 15 هرتز باشه .
              حالا میخواهیم یک برنامه بنویسیم که بتونه توی همون شکل بازه های این دو تا فرکانس رو مشخص کنه . یا به اصطلاح سگمنت کنه . ( در جایی که فرکانس عوض میشه یه خط عمود مثلا قرمز بندازه . یا به یه نحوی نشون بدیم که این دو تا از هم جدا شدن

              دیدگاه


                #8
                پاسخ : Signal Segmentation

                اول فرض کنید طول سیگنال 1024 نمونه است.
                حالا میخواهیم بیبینم در سگمنت های تقریبا 256 تایی چه موقع فرکانس عوض میشه.( این رزلوژن کار هست)
                حالا
                سیگنال رو 256 تا 256 تا جدا کنید.
                fft بگیرید.
                حالا همون 256 تا رو به 4 الی 5 یا بیشتر قسمت تبدیل کنید. و اندازه نمونه های هر قسمت رو با هم جمع کنید.
                پس برای هر 256 سمپل زمانی 4 الی 5 عدد دارید.

                حالا برای اون قسمت های مختلف همه این کار رو کردید و معادل کل سیگنال 1024 سمپل , 4 تا عدد 4 الی 5 تایی دارید.
                حالا فاصله اقلیدسی هر وکتور اعداد که توشون 4 یا 5 عدد هست حساب کنید
                هر جا این عدد ها فاصلشون از یک استانه بیشتر شد فرکانس عوض شده.
                { خلاف قوانین - پاک شد }

                دیدگاه


                  #9
                  پاسخ : Signal Segmentation

                  میشه خواهش کنم کمک کنید استپ به استپ برنامه رو بنویسیم
                  برنامه شکل موج اینه

                  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)

                  دیدگاه


                    #10
                    پاسخ : Signal Segmentation

                    نتیجه استفاده از تبدیل موجک (ویولت) دابیشز 1 (هار) با دو سطح تجزیه:
                    از دستور wavemenu استفاده کن.
                    هر چقدر سطح تجزیه بالاتر بره، اختلاف مقدار سیگنال detail بیشتر بین بازه های زمانی با فرکانس های متفاوت بیشتر میشه.
                    لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
                    لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
                    با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
                    اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
                    يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

                    دیدگاه


                      #11
                      پاسخ : Signal Segmentation

                      میشه خواهش کنم بفرمایید سیگنال رو چطور خوندید ؟
                      من دو تا فرکانس رو با هم توی یک شکل نمیتونم داشته باشم .
                      و از کدوم قسمت ویولت استفاده کردید ؟(( از دستورات بالا برای درست کردن سیگنال استفاده می کنم))

                      دیدگاه


                        #12
                        پاسخ : Signal Segmentation

                        متأسفانه الان متلب ندارم که شکل بذارم ولی امیدوارم درست بگم:
                        1- از اولین گزینه یعنی Wavelet 1-D استفاده کنید.
                        2- در پنجره ای که باز میشه از منوی File گزینه Import from Workspace رو انتخاب کنید(سیگنالتون باید توی Workspace قبلاً ساخته شده باشه).
                        3- کدی که نوشتی دو تا سیگنال میسازه در حالی که باید یک سیگنال باشه مثلاً میتونی به شکل زیر بنویسی:
                        کد PHP:
                        linspace(0,1,1000);
                        f1 5;
                        s1 sin(2*pi*f1*t(1:500));
                        f2 15;
                        s2 sin(2*pi*f2*t(501:1000));
                        = [s1,s2];
                        plot(t,s);

                        [
                        a1,d1] = dwt(s,'db1');
                        [a2,d2] = dwt(a1,'db1');
                        figure;
                        plot(abs(d2)); 

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

                        دیدگاه


                          #13
                          پاسخ : Signal Segmentation

                          به نظر شما به جز ویولت از چه روشی میشه برای segment کردن سیگنال استفاده کرد ؟
                          مثلا segment کردن یک سیگنال ECG
                          مرسی

                          دیدگاه


                            #14
                            پاسخ : Signal Segmentation

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

                            دیدگاه


                              #15
                              پاسخ : Signal Segmentation

                              من یه سیگنال دارم که دوتا spike داره. با ویولت روی d3 این دو تا spike خیلی خوب مشخص بودن و اون قسمت هایی که بیشتر از یک حد آستانه بود رو یک قرار دادم تا اون نواحی spike ها رو تعیین کنم . حالا چطور میشه دستور بنویسم که بیاد روی سیگنال اصلی این نواحی رو فیلتر کنه یا مثلا صفر کنه؟
                              نواحی این طور بودن: ( با دستور find اندیس های یک رو بهم داد ولی نمیدونم از اینها چطور استفاده کنم)
                              یک اسپایک بین نقاط 44 تا 69 قرار داره یکی دیگه بین 248 تا 269 حالا با این نواحی چیکار کنم و با چه دستوری رو سیگنال اصلی میتونم این نواحی رو حذف کنم
                              مرسی
                              Columns 1 through 12

                              44 47 48 49 50 51 52 54 55 56 57 58

                              Columns 13 through 24

                              60 61 62 63 64 65 68 69 248 249 250 251

                              Columns 25 through 36

                              252 255 256 257 258 261 262 263 264 265 268 269


                              دیدگاه

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