اطلاعیه

Collapse
No announcement yet.

نمونه برداری درست از سیگنال و نحوه دور ریختن داده های پرت

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

    نمونه برداری درست از سیگنال و نحوه دور ریختن داده های پرت

    سلام به همگی ،
    برای نمونه برداری از یک سیگنال انالوگ برای تبدیل کردن به دیجیتال بهتره که در چه
    فواصل زمانی کار نمونه برداری رو انجام بدیم ؟ و اینکه بهتره که چند تا نمونه برداریم برای
    بالا بردن دقت ؟؟
    همیشه وقتی کار نمونه برداری رو انجام میدم به یکسری داده های پرت میرسم ، دنبال
    یک الگوریتم میکردم که بتونم داده های پرتی که اختلاف زیادی با واقعیت دارنو دور بریزم
    و از بقیه نمونه ها استفاده کنم ، دوستان اگر کسی میتونه کمکم کنه . با تشکر ..

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

    فواصل که هرچی کمتر بهتر،اما مسئله اینجاست که هرچی این فاصله زمانی کمتر بشه،تعداد نمونه ها میره بالا و بالاتر،اونوخت نگه داشتنش سخت میشه
    معمولن اینطوریه که تو یه حلقه با یه دیلی که همون فاصله زمانیه مقادیر تبدیل شده آنالوگ به دیجیتالو میریزی تو یه آرایه،ولی تو مجاز نیستی که هر تعداد خاستی به آرایت خونه اختصاص بدی.
    میشه یکم هدفی که از این کار داریو توضیح بدی...

    دیدگاه


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

      نوشته اصلی توسط ardeshir74 نمایش پست ها
      فواصل که هرچی کمتر بهتر،اما مسئله اینجاست که هرچی این فاصله زمانی کمتر بشه،تعداد نمونه ها میره بالا و بالاتر،اونوخت نگه داشتنش سخت میشه
      معمولن اینطوریه که تو یه حلقه با یه دیلی که همون فاصله زمانیه مقادیر تبدیل شده آنالوگ به دیجیتالو میریزی تو یه آرایه،ولی تو مجاز نیستی که هر تعداد خاستی به آرایت خونه اختصاص بدی.
      میشه یکم هدفی که از این کار داریو توضیح بدی...
      بله مثال میزنم ،
      به وسیله یک ntc و یک رگولاتور جریان اقدام به ساخت یک سنسور دما کردم ، تقریبا هم داره درست کار می*کنه ، مشکل اینجا بود که هر چند باری که دما درست خونده میشد یکبار به دمای غیر معقول نشون میداد ، خوب این میتونه به علت نویز باضه ، تمام راهکارهای پیشگیری از نویز رو هم رعایت کردم ، حالا برای اینکه این اتفاق نیوفته من به جای یکبار ده بار پشت سر هم از سیگنال نمونه برداری کردم و* در نهایت میانگین گرفتم که* خیلی بهتر شد ، حالا اگه بشه یه الگوریتمی نوشت که بین داده های دریافتی ،( که ۱۰ تا هستن ) ۸ تا داده که نزدیک به هم هستن رو نگه داره و ۲ تا از داده ها که اختلاف زیادی با بقیه دارنو ( به اصطلاح داده پرت ) بریزه دور ، دقت خیلی میره بالا .

      دیدگاه


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

        میانگین گرفتن زمانی که داده های نا معقول و پرت داری کار درستی نیست. بهتره از انحراف معیار استفاده کنی که بتونی اون داده های پرت رو باهاش حذف کنی. راجع بهش سرچ کن. "واریانس" و "انحراف معیار". یا variance و standard deviation

        دیدگاه


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

          انحراف از معیار رو بدست آوردیم، حالا چطور ازش باید استفاده کرد؟؟؟؟؟؟؟

          دیدگاه


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

            خب حالا دست خودتونه که بگین مثلا انحراف معیار کوچیک تر از فلان عدد قبوله، و بزرگتر از اون میشه داده ی پرت و باید حذف بشه

            دیدگاه


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

              نوشته اصلی توسط magician نمایش پست ها
              خب حالا دست خودتونه که بگین مثلا انحراف معیار کوچیک تر از فلان عدد قبوله، و بزرگتر از اون میشه داده ی پرت و باید حذف بشه

              https://fa.wikipedia.org/wiki/%D8%A7...8C%D8%A7%D8%B1
              ممنون از شما ، این مبحث واریانس واقعا مفیده ، .
              انحراف معیار یعنی مجذور اختلاف داده ها با میانگین ، که* ویکی پدیا کامل توضیح داده ، داده هایی با انحراف معیار بیشتر از ۲ واحد را ما به عنوان داده های پرت در نظر میگیریم .
              پیدا کردن داده های پرت مشکلی نداره ، اما نیازمند به تعریف متغیر های زیادیه که* هر کدوم مقداری از حافظه رو اشغال میکنند .ولی حالا ما داده پرت رو پیدا کردیم حالا چطور اونو بذاریم کنار و از بقیه میانگین بگیریم ؟

              دیدگاه


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

                به طور مثال ما یک مجموعه متناهی داریم ( این اعداد از جنس دما هستند و تقریبا در عمل همه به همین اعداد رسیدم ):
                20-21-20-28-19
                میانگین = ۲۱.۶
                مقدار میانگین رو داخل یک متغیر از جنس بایت میریزم مه فقط عدد صحیح میمونه
                حالا انحراف معیار هرکدومو حساب میکنیم
                1-1-1-4-42
                انحراف معیار بیشتر از ۲ واحد داده پرت محسوب میشه ، یعنی ۱۹ و ۲۸
                حالا ما باید از بقیه داده ها که* ۳ تا هست میانگین بگیریم .
                تا اینجا نوشتن برنامه مشکلی نیست ولی اخرش به خرده سخت میشه .
                [LEFT](A=getadc(0
                (B=getadc(0
                (C=getAdc(0
                (D=getadc(0
                (E=getadc(0
                AVG=a+b ; AVG=AVG+c ; AVG=AVG+d ; AVG= AVG+e
                AVG = AVG/5
                Sd1=a-avg ; sd1 = sd1*sd1
                Sd2 = b-avg ; sd2 = sd2*sd2
                Sd3=c-avg ; sd3=sd3*sd3
                Sd4=c-avg ; sd4=sd4 * sd4
                Sd5 = e- AVG ; sd5 = sd5 * sd5

                [/LEFT]





                SD 4 و sd5 برابر با ۴ و ۴۲ هستند ، پس داده های مربوط به اونها که* d و e هستند باید کنار گذاشته بشن ، تا همینجا هم مجبور شدم کلی متغیر تعریف کنم ، به کارگیری متغیر های زیاد مشکلی ایجاد می*کنه ؟
                و از این به بعد هم باید کلی دستور شرطی بنویسم ، به دنبال به راه ساده تر میگردم

                دیدگاه


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

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

                  دیدگاه


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

                    وقت بخیر

                    بنظر من کافیه اعداد رو مرتب ( sort ) کنی انوقت اعداد بالایی و پایینی رو حذف و از بقیه میانگین بگیری این راحتر و سریع تر هست !! اینجوری نتیجه خیلی متفاوت خود بحود حذف میشه !!

                    دیدگاه


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

                      نوشته اصلی توسط taktrashe نمایش پست ها
                      وقت بخیر

                      بنظر من کافیه اعداد رو مرتب ( sort ) کنی انوقت اعداد بالایی و پایینی رو حذف و از بقیه میانگین بگیری این راحتر و سریع تر هست !! اینجوری نتیجه خیلی متفاوت خود بحود حذف میشه !!
                      فکر خوبیه ، ولی چطور میشه sort کرد اعداد رو ، به یکی از زبان های برنامه نویسی ، ترجیحا بیسیک اگر که* توضیح بدین ممنون میشم .البته اگر زمانی بیشتر از دوتا داده پرت داشته باشیم دیگه کارساز نیست اما مرتب کردن داده ها خیلی به درد میخوره ،
                      با تشکر

                      دیدگاه


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

                        به نظر من هر بار که یه نمونه جدید میگیرید با دوتا نمونه قبلی مقایسه کنید. اگه اختلاف بیش از 2 بود حذف کنید.
                        a=20 b=21 c=30
                        if(abs(a-c)>2)
                        مثلا این مدلی بنویسید. بعد از داده ها میانگین گیری کنید.
                        حالا شاید براتون سوال پیش بیاد اگه واقعا دما بالا بره چی میشه؟! جواب اینه که شما اگه فاصله زمانی بین نمونه هاتون کم باشه، مقدار نمونه ها هم بصورت آرام آرام افزایش پیدا میکنه پس مشکلی پیش نمیاد.
                        موفق باشید
                        www.gam-co.blogsky.com

                        دیدگاه


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

                          نوشته اصلی توسط vahidabedi نمایش پست ها
                          به نظر من هر بار که یه نمونه جدید میگیرید با دوتا نمونه قبلی مقایسه کنید. اگه اختلاف بیش از 2 بود حذف کنید.
                          a=20 b=21 c=30
                          if(abs(a-c)>2)
                          مثلا این مدلی بنویسید. بعد از داده ها میانگین گیری کنید.
                          حالا شاید براتون سوال پیش بیاد اگه واقعا دما بالا بره چی میشه؟! جواب اینه که شما اگه فاصله زمانی بین نمونه هاتون کم باشه، مقدار نمونه ها هم بصورت آرام آرام افزایش پیدا میکنه پس مشکلی پیش نمیاد.
                          موفق باشید
                          ممنون از راهنماییتون ، مثلا مقدار (b-c) میشه پنج که* بزرگتر از ۲ هست ، حالا از کجا بفهمیم کدوم متغیر داده پرت حساب میشه ؟ b یا c ?

                          دیدگاه


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

                            مسلما c. چون b قبلا با a مقایسه شده و مشکلی نداشته.
                            www.gam-co.blogsky.com

                            دیدگاه

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