مشاهده نسخه کامل
: ترسیم نمودار پزشکی
فاطمه وطن دوست
15-05-2012, 23:29
سلام
نموداری( پزشکی) میخوام ترسیم کنم که هزاران x و هزاران y را در چند سیکل زمانی ترسیم کنه و بعد از
رسم نمودار انتگرال ناحیه ی زیرین نمودار محاسبه شود.
راهنمایی بیشتر
=================
الف) مثل نوار قلب که به صورت خیلی طولانی ترسیم میشه.
ب)لینک زیر رو ببینید.
fa.wikipedia.org/wiki/%D9%BE%D8%B...tegral.svg ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])
================================================== ===
این مطلب رو اضافه کنم که محور x ها همواره مقادیر بین 0 تا 90 (درجه برای حرکت زانو) ثابت هست.و چند بار
به صورت معکوس شخص زانوی خود را خم میکند.(1 بار از صفر تا 90 و بار دیگه از 90 تا 0 و همچنین چند بار
دیگر)و محور yها نیروی وارد بر زانوی شخص میباشد.
وارتباط بین این دو مقدار مشخص نیست.
به نظر شما فرمان plot میتونه با ایجاد نقطه روی محورها ترسیم رو بدون خطا انجام بده؟
منطق برنامه :
================
مثلا دو تا آرایه برای مقادیر x,y تعریف کنیم و بعد تو یه یه حلقه مقادیر و ارسال کنیم به تابع Plot تا بعد از ایجاد
نقاط و اتصال اونا بهم منحنی مربوطه ترسیم و با انتخاب بهترین منحنی و وصل کردن ابتدا و انتهای منحنی
بدست آمده به محور x ها نتیجه مطلوب(انتگرال) رو پیدا کرد؟
davy jones
16-05-2012, 17:02
سلام
نموداری( پزشکی) میخوام ترسیم کنم که هزاران x و هزاران y را در چند سیکل زمانی ترسیم کنه و بعد از
رسم نمودار انتگرال ناحیه ی زیرین نمودار محاسبه شود.
راهنمایی بیشتر
=================
الف) مثل نوار قلب که به صورت خیلی طولانی ترسیم میشه.
ب)لینک زیر رو ببینید.
fa.wikipedia.org/wiki/%D9%BE%D8%B...tegral.svg ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] Fwiki%2F%25D9%25BE%25D8%25B...tegral.svg)
================================================== ===
این مطلب رو اضافه کنم که محور x ها همواره مقادیر بین 0 تا 90 (درجه برای حرکت زانو) ثابت هست.و چند بار
به صورت معکوس شخص زانوی خود را خم میکند.(1 بار از صفر تا 90 و بار دیگه از 90 تا 0 و همچنین چند بار
دیگر)و محور yها نیروی وارد بر زانوی شخص میباشد.
وارتباط بین این دو مقدار مشخص نیست.
به نظر شما فرمان plot میتونه با ایجاد نقطه روی محورها ترسیم رو بدون خطا انجام بده؟
منطق برنامه :
================
مثلا دو تا آرایه برای مقادیر x,y تعریف کنیم و بعد تو یه یه حلقه مقادیر و ارسال کنیم به تابع Plot تا بعد از ایجاد
نقاط و اتصال اونا بهم منحنی مربوطه ترسیم و با انتخاب بهترین منحنی و وصل کردن ابتدا و انتهای منحنی
بدست آمده به محور x ها نتیجه مطلوب(انتگرال) رو پیدا کرد؟
سلام
لینک خراب بود اما یه چیزایی دستگیرم شد.
اولا باید دقت داشته باشید که نمودار هر مرحله از باز یا بسته شدن زانو باید در یک نمودار جدا گانه رسم بشه. البته اگه نمودار مربوط به باز شدن های زانو و نمودارهای مربوط به بسته شدن های زانو جداگانه مورد تحلیل قرار بگیره، خیلی بهتره.
بعد از این توضیحات، باید دید که شما از چه نرم افزاری برای تحلیل داده هاتون میخواید استفاده کنید. دستور plot مال متلب هستش که نرم افزار خوب و قوی ای برای اینگونه داده های زیاد و پر حجمه. (البته اگه حجم داده ها آنچنان بالا نیست، به نظرم از نرم افزار excel هم میتونین برای رسم نمودار استفاده کنین.)
روش کارتون هم تقریبا درسته. یعنی ابتدا باید n تا جفت رشته (string) برای هر کدوم از x و y تعریف کنین. (n تعداد دفعات باز و بسته کردن زانو هستش) و بعد داده هایی که به دست میان رو با حفظ ترتیب حصول اون داده ها، درون رشته ی متناظر خودشون قرار میدین و با استفاده از دستور plot هر جفت رشته رو در یک نمودار رسم میکنین. بعدشم که میتونین انتگرال بگیرین یا هر عملیات دلخواه دیگه ای که خواستین رو روی هر کدوم از نمودارها انجام بدین.
موفق باشین.
91/2/27
فاطمه وطن دوست
17-05-2012, 11:16
برای انتگرال گیری باید معادله و شیب خط رو بدست بیارم و بعد جواب های بدست آمده ( انتگرال ) رو با هم جمع کنم؟{ در متلب باید از تابع int استفاده بشه.}
یا روش بهتری به نظرتون میرسه ؟
من فقط میخوام درصد خطا خیلی کم باشه ، دنبال بهترین منطق هستم.
ترسیم نمودار هم میخوام بدون خطا انجام بشه .راستش تو Excel تست کردم ولی متآسفانه ترسیم درست انجام نشد چون
برای ایکس ها و وای ها دو تا خط جداگانه ترسیم کرد.
davy jones
17-05-2012, 12:02
برای انتگرال گیری باید معادله و شیب خط رو بدست بیارم و بعد جواب های بدست آمده ( انتگرال ) رو با هم جمع کنم؟{ در متلب باید از تابع int استفاده بشه.}
یا روش بهتری به نظرتون میرسه ؟
من فقط میخوام درصد خطا خیلی کم باشه ، دنبال بهترین منطق هستم.
ترسیم نمودار هم میخوام بدون خطا انجام بشه .راستش تو Excel تست کردم ولی متآسفانه ترسیم درست انجام نشد چون
برای ایکس ها و وای ها دو تا خط جداگانه ترسیم کرد.
سلام
شما لزوما نخواهید توانست که معادله و ضابطه ی مشخص و درست و درمونی برای نمودارهاتون به دست بیارین. بنابراین باید از روشهای انتگرال گیری عددی استفاده کنین. یعنی همون سری ریمان و حد اون سری وقتی که n به سمت بینهایت بره و ...
در متلب از همون تابع int که استفاده کنین خودش همین کار رو براتون میکنه.
برای کم بودن درصد خطا هم میتونین به طور دستی و با استفاده از سری ریمان، خودتون مقادیر x رو بازه بندی کنین و به روش عددی انتگرال بگیرین. منتها به یاد داشته باشین که هر چه محور x ها رو به بازه های بیشتر ولی کوچکتر تقسیم کنین، خطای محاسبه ی انتگرال کمتر و کمتر خواهد شد.
تو اکسل خیلی مهمه که محورها رو درست به اکسل بفهمونین. احتمالا شما نتونستین حالیش کنین که محور x کدومه و محور y کدومه. وگرنه خود بنده با اکسل یه همچین کارایی که شما میخواین بکنین رو البته در حجم کمتر انجام دادم قبلا. با این توضیحاتی که فرمودین حدس میزنم اکسل اومده و هر کدوم از مقادیر x و y رو روی محور عرضها انداخته و در محور طول ها از مقادیر اعداد طبیعی استفاده کرده (3,2,1,...n) اگه حوصله دارین به بار دیگه مجددا تو اکسل امتحان کنین و دقت کنین که محور طول ها رو به درستی حالیش کردین.
موفق باشین.
91/2/28
فاطمه وطن دوست
17-05-2012, 14:47
نقل قول "
در متلب از همون تابع int که استفاده کنین خودش همین کار رو براتون میکنه
مگه نباید هنگام استفاده از تابع int تابع هم بعنوان آرگومان ارسال بشه ؟ من رابطه ای بین x , y ندارم شما هم گفتید
نق قول :
شما لزوما نخواهید توانست که معادله و ضابطه ی مشخص و درست و درمونی برای نمودارهاتون به دست بیارین
بازم راهنمائی بفرمائید بیزحمت.
davy jones
17-05-2012, 15:47
نقل قول "
در متلب از همون تابع int که استفاده کنین خودش همین کار رو براتون میکنه
مگه نباید هنگام استفاده از تابع int تابع هم بعنوان آرگومان ارسال بشه ؟ من رابطه ای بین x , y ندارم شما هم گفتید
نق قول :
شما لزوما نخواهید توانست که معادله و ضابطه ی مشخص و درست و درمونی برای نمودارهاتون به دست بیارین
بازم راهنمائی بفرمائید بیزحمت.
سلام.
فکر کنم تو متلب، با استفاده از تابع int بشه بدون آرگومان هم به صورت عددی انتگرال گرفت. البته مطمئن نیستم.
ولی خب همونطور که عرض کردم مطمئن ترین روش استفاده از سری ریمان هستش و اینکه شما به طور دستی خودتون همون روش انتگرال گیری نرم افزارها رو شبیه سازی و پیاده کنین.
در روش انتگرال گیری به شیوه ی سری (یا مجموع) ریمان، باید محدوده ای که میخواین انتگرال گیری کنین رو روی محور طولها به بازه های کوچکتر تقسیم کنین. بعد یک نقطه ی شاخص از هر بازه رو انتخاب میکنین (مثلا نقطه ی ابتدا یا انتهای بازه یا نقطه ی وسط هر بازه یا ...) و فرض میکنین که مقدار تابع در همه ی اون بازه ی کوچک، برابر با مقدار y اون نقطه ی خاص در اون بازه هست. و سپس مساحت مستطیل باریکی رو که به وجود میاد رو به عنوان مساحت تقریبی زیر نمودار تابع در اون بازه ی کوچک، محاسبه میکنین.
هر چه تعداد مستطیلها بیشتر باشه و بازه ها کوچکتر انتخاب بشن، مقدار مساحت محاسبه شده، به واقعیت نزدیک تره. (برای درک بهتر به اشکال زیر نگاه کنین) :
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
================================================== ===========
================================================== ===========
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
================================================== ===========
================================================== ===========
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
برای مطالعه ی بیشتر در مورد سری ریمان و انتگرال گیری به این روش لینکهای زیر رو مطالعه بفرمایین:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] Fwiki%2FRiemann_sum)
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] com%2FRiemannSum.html)
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] Fwiki%2FRiemann_integral)
========================================
اما یه روش دیگه هم وجود داره که البته یکمی از لحاظ درک ریاضی، درکش پیچیده تر و مشکل تره ولی نتیجه ای که میده شاید مطمئن تر باشه و مهمتر اینکه زحمت شما رو هم کم میکنه چون با استفاده از توابع خود متلب، همه ی عملیات محاسباتی انجام میشه و اونهم استفاده از روش درونیابی و برازش دیتا با توابع پایه مثل چندجمله ای ها، توابع مثلثاتی توابع نمایی و لگاریتمی) هستش. به عنوان مثال شما یک رشته از اعداد به عنوان مقدیر محور x دارین که هر کدوم از این مقادیر متناظر با یک مقدار روی محور y هستند و مجموعا هر کدام تشکیل یک زوج مرتب داده و یک نقطه ی خاص را روی صفحه ی نمودار دو بعدی، نشون میدن. شما میتونین از این نقاط، یک تابع چندجمله ای دلخواه عبور بدین به طوری که از همه ی اون نقاط عبور کنه. اینطوری میشه فرض کرد که ضابطه ی تابع ما تقریبا برابر با ضابطه ی همون چند جمله ای هستش. از لحاظ ریاضی میشه ثابت کرد که از هر n تا نقطه ی مجزا از هم در فضای دو بعدی، میشه یک تابع چند جمله ای منحصر به فرد از درجه ی n-1 عبور داد به نحوی که همه ی اون نقاط رو پوشش بده. اگه درجه ی چند جمله ای رو از n-1 بیشتر در نظر بگیریم، بیش از یک تابع میتونه چنین شرایطی داشته باشه و اگه درجه ی تابع چند جمله ای از n-1 کمتر فرض بشه ممکنه برخی از داده ها رو نتونیم پوشش بدیم.
هر چه مقدار n رو بزرگتر فرض کنیم، تقریب ما به واقعیت نزدیک تر میشه.
در متلب، دو تا تابع هستد که این کار رو میکنن. یکی تابع (polyfitt(y,x,n که n در حقیقت درجه ی تابع چند جمله ای هستش که شما میخواین از نقاط دیتای اولیه ی خودتون عبور بدین. x و y رو هم که قبلا باید در رشته هایی تعریف کرده باشید.
تابع دومی هم که این کار رو میکنه تابع (spline(x,y,z هستش که z در این تابع مختصات نقطه ی دلخواهی هستش که شما میخواهید مقدار تقریبی نمودار رو در اون نقطه بدونین ولی اون نقطه جزء دیتای اولیه ی شما نیست.
البته با توجه به اینکه شما میخواین بعدش انتگرال گیری انجام بدین، به نظرم تابع اول به دردتون میخوره. چون ضابطه ی تقریبی تابع برای انتگرال گیری مهمه نه مقدار تقریبی نمودار در نقاط دلخواه. بعد از اینکه ضابطه ی تابع چند جمله ای رو با استفاده از دستور (polyfitt(y,x,n پیدا کردین، با استفاده از تابع int از تابع تقریبی به دست اومده در هر بازه ی دلخواهی انتگرال بگیرین.
------------
جالبه که بدونین همه ی این کارها رو (درونیابی و انتگرال گیری و ...) میشه تو اکسل هم انجام داد به شرطی که قلق کار کردن با نمودارهای اکسل رو وارد باشید. تازه به نظرم دردسرش هم کمتره تا حدودی.:20:
موفق باشین.
91/2/28
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.