حلقه For

bitaroos

Member
سلام

من می خوام با حدود 4000 نقطه یه نمودار رسم کنم و بعد با استفاده از یک فیلتر Savitzky-Golay
نویز های نمودارم رو بگیرم. توی شکل زیر یه مقداری از نمودار رو نشون دادم

attachment.php


فرمول فیلتر Savitzky-Golay هم از اینجا نگاه کنید تو پیوست هم آوردمش.

یه بنده خدا هم کد نویسی این فرمول رو به این صورت نوشته.
همینجور که می بینید از حلقه For استفاده نکرده (البته از 5 نقطه بیشتر استفاده نکرده)
اگر با حلقه for این فرمول رو می نوشت، آیا سرعت برنامه کمتر میشد؟
اگر من بخواهم بجای NP=5 از NP=25 استفاده کنم یا اصلا به کار بر اجازه بدم که تعداد NP
رو خودش مشخص کنه، بهتر نیست از حلقه for استفاده کنم؟
اگر NP=25 باشه و از حلقه for استفاده کنم، سرعت کم میشه؟
توجه کیند که این فرمول باید روی 4000 نقطه اعمال بشه

منبع: http://stackoverflow.com/questions/4388911/how-can-i-draw-smoothed-rounded-curved-line-graphs-c
 

پیوست ها

  • Charts.jpg
    Charts.jpg
    46 کیلوبایت · بازدیدها: 15
  • Filter.jpg
    Filter.jpg
    108.7 کیلوبایت · بازدیدها: 6
  • Code.jpg
    Code.jpg
    136.5 کیلوبایت · بازدیدها: 5

the_king

مدیرکل انجمن
سلام

من می خوام با حدود 4000 نقطه یه نمودار رسم کنم و بعد با استفاده از یک فیلتر Savitzky-Golay
نویز های نمودارم رو بگیرم. توی شکل زیر یه مقداری از نمودار رو نشون دادم

attachment.php


فرمول فیلتر Savitzky-Golay هم از اینجا نگاه کنید تو پیوست هم آوردمش.

یه بنده خدا هم کد نویسی این فرمول رو به این صورت نوشته.
همینجور که می بینید از حلقه For استفاده نکرده (البته از 5 نقطه بیشتر استفاده نکرده)
اگر با حلقه for این فرمول رو می نوشت، آیا سرعت برنامه کمتر میشد؟
اگر من بخواهم بجای NP=5 از NP=25 استفاده کنم یا اصلا به کار بر اجازه بدم که تعداد NP
رو خودش مشخص کنه، بهتر نیست از حلقه for استفاده کنم؟
اگر NP=25 باشه و از حلقه for استفاده کنم، سرعت کم میشه؟
توجه کیند که این فرمول باید روی 4000 نقطه اعمال بشه

منبع: http://stackoverflow.com/questions/4388911/how-can-i-draw-smoothed-rounded-curved-line-graphs-c
حلقه For لازم نداشته چون 5 بار بیشتر نبوده، اما برای بهتر مشخص شدن روال بهتره از حلقه استفاده بشه،
روی سرعت اجرا تاثیر چندانی نداره. صرفا تغییر یک متغیر حلقه به پردازش کد اضافه میشه که بار پردازشی
محسوسی نیست. طبیعتا اگر بخواهید بازه رو متغیر در نظر بگیرید حتما باید از حلقه استفاده کنید.

4000 نقطه اصلا رقم زیادی نیست، یه صفحه نمایش 1024x768 که در ثانیه چندین فیلتر مختلف رویش اجرا میشه
به تنهایی 786432 نقطه است که هر کدوم سه کانال رنگی داره و در هر پردازش باید با چند برابر نقطه بیشتر از
این مقایسه بشه. طبیعتا اگر تعداد مقایسه ها رو 5 برابر کنید، زمان لازم برای اجرای کد هم 5 برابر میشه، اما
در کل زمان زیادی نیست. حتی اگر برای زبان های Net. سنگین بود که نیست می توانید با یک DLL که با ++Visual C
می سازید اون پردازش آرایه رو به مراتب سریعتر اجرا کنید.
 

جدیدترین ارسال ها

بالا