سلام دوستان. من دنبال برنامه ای هستم که بتونم دو تا منحنی رو روی هم الاین(هم تراز) کنم و تابعی که این کارو میکنه هم به صورت یک ماتریس در خروجی داشته باشم. اگر منحنی ها کاملا روی هم الاین نشدند مشکلی نداره، خطای ناچیز هم مجازه. اگر کسی برنامه آماده شو جایی دیده باشه ممنون میشم کمک کنین
اطلاعیه
Collapse
No announcement yet.
الاینمنت و nonrigid transformation
Collapse
X
-
پاسخ : الاینمنت و nonrigid transformation
ببینید درست متوجه شدم:
اگه مختصات نقاط توابع رو داری
میتونی از curve fitting یا interpolation استفاده کنی
:read:
همچنین لینک زیر:
Align two data sets
...
1: اللهم صل علی محمد و آل محمد و عجل فرجهم و ...
2: دانش بهتره یا ثروت؟ بدون شعور هیچکدوم!
3: دلا معاش چنان کن که گر بلغزد پای *** فرشتهات به دو دست دعا نگه دارد (حافظ)
-
پاسخ : الاینمنت و nonrigid transformation
نه منظورم این نبود. ما دو ماتریس داریم که ابعادشون باهم برابره(مثلا x1 , x2 ). کاری که میخواییم بکنیم اینه که x1 رو دفورمه کنیم تا حتی الامکان به x2 تبدیل بشه. و تابعی که این تبدیل رو انجام میده هم داشته باشیم تا ازش برای ذاده های دیگه استفاده کنیم. لطفا کمک کنید وقت زیادی برام نمونده. بعضی از کدهای آماده هم اصلا نمیشه ازشون چیزی فهمید :angry:
دیدگاه
-
پاسخ : الاینمنت و nonrigid transformation
نوشته اصلی توسط arezoomehdiنه منظورم این نبود. ما دو ماتریس داریم که ابعادشون باهم برابره(مثلا x1 , x2 ). کاری که میخواییم بکنیم اینه که x1 رو دفورمه کنیم تا حتی الامکان به x2 تبدیل بشه. و تابعی که این تبدیل رو انجام میده هم داشته باشیم تا ازش برای ذاده های دیگه استفاده کنیم. لطفا کمک کنید وقت زیادی برام نمونده. بعضی از کدهای آماده هم اصلا نمیشه ازشون چیزی فهمید :angry:
شبیه تعدیل هیستوگرام تصویره
جایی که به کمک یک تابع تبدیل
هیستوگرام یک تصویر به هیستوگرام یک تصویر دیگه تبدیل میشه
اگه برای تصویر میخواید کدهاش فراوون موجوده
...
همچنین ایده ی زیر هم ببینید:
Dynamic Time Warp
...
ابعاد ماتریستون چیه؟1: اللهم صل علی محمد و آل محمد و عجل فرجهم و ...
2: دانش بهتره یا ثروت؟ بدون شعور هیچکدوم!
3: دلا معاش چنان کن که گر بلغزد پای *** فرشتهات به دو دست دعا نگه دارد (حافظ)
دیدگاه
-
پاسخ : الاینمنت و nonrigid transformation
خیلی ممنون برای وقتی که میذارید. :smile: نه پردازش تصویر نیست کارم. دوتا منحنی دارم که 21 تا نقطه ازش دارم. یعنی ابعاد ماتریسهام میتونه 21*n باشه. به طور خلاصه بگم از یه آزمایش دوتا منحنی (همون 21 تا نقطه) به دست آوردیم که هدفمون پیداکردن ماتریسی هست که یکی از منحنی ها رو به اون یکی تبدیل کنه. در مورد DTW چطور میشه ازش برای این کار استفاده کرد؟
دیدگاه
-
پاسخ : الاینمنت و nonrigid transformation
ببین این تحلیل درسته:
یک منحنی داری به نام x با ضابطه f(t) یعنی:
کد:x=f(t)
کد:y=g(t)
کد:g(t) = f(t) T(t)
کد:T(t) = g(t)/f(t)
تابع تبدیل T هم 21 نقطه خواهد داشت.
...
اگر این تحلیل به کارت نمیاد بگو جور دیگه به مساله نگاه کنیم!1: اللهم صل علی محمد و آل محمد و عجل فرجهم و ...
2: دانش بهتره یا ثروت؟ بدون شعور هیچکدوم!
3: دلا معاش چنان کن که گر بلغزد پای *** فرشتهات به دو دست دعا نگه دارد (حافظ)
دیدگاه
-
پاسخ : الاینمنت و nonrigid transformation
خیلی جالبه من ماه هاست روی این فکر میکنم و مساله رو خیلی پیچیده نگاه میکردم. این چیزی که گفتید کاملا درسته ولی ما نمی خواییم T یه تابع خطی باشه.دلیلش هم برمیگرده به این که می خواهیم از این تابع تبدیل (T) بعدا برای تخمین یک منحنی دیگه استفاده کنیم و تو این حالت خطای زیادی داریم.
دیدگاه
-
پاسخ : الاینمنت و nonrigid transformation
از شبکه عصبی هم میتونی استفاده کنی، البته برای آموزش درست شبکه عصبی لازمه تعداد داده های آموزشی زیاد باشه.لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.با تمام وجود گناه کردیم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنیم چه می کند؟"دکتر شریعتی"
لطفاً سوالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
اگر جایی که ایستاده اید را نمی پسندید، عوضش کنید شما درخت نیستید!! "پاسکال"
یا به اندازه ی آرزوهایت تلاش کن یا به اندازه تلاشت آرزو کن. "شکسپیر"
دیدگاه
-
پاسخ : الاینمنت و nonrigid transformation
نوشته اصلی توسط arezoomehdiما نمی خواییم T یه تابع خطی باشه.دلیلش هم برمیگرده به این که می خواهیم از این تابع تبدیل (T) بعدا برای تخمین یک منحنی دیگه استفاده کنیم و تو این حالت خطای زیادی داریم.
تابعی که در اینجا نوشتیم اصلا خطی نیست
و از تقسیم دو تابع بر هم بدست میاد
حالت خطی یعنی این:
شما بیای به کمک روشهایی (اگه لازم بود بگو بهت بگم)
از روی 21 عدد ورودی و خروجی
یک ضریب واحد پیدا کنی
و تک تک اون 21 عدد رو در همون یک ضریب، ضرب کنی
و خروجی تقریبی بدست بیاد!
این خودش یک روش برای [glow=red,2,300]تقریب[/glow] یا [glow=red,2,300]تخمینه [/glow]
میتونی از روشهای دقیقتر هم استفاده کنی
و مثلا به جای 1 ضریب، چندین ضریب داشته باشی
همچنین مبشه یه سری هم به بحثهای [glow=green,2,300]تخمین[/glow] زد!
...
1: اللهم صل علی محمد و آل محمد و عجل فرجهم و ...
2: دانش بهتره یا ثروت؟ بدون شعور هیچکدوم!
3: دلا معاش چنان کن که گر بلغزد پای *** فرشتهات به دو دست دعا نگه دارد (حافظ)
دیدگاه
-
پاسخ : الاینمنت و nonrigid transformation
باز هم ازتون ممنونم برای وقتی که میذارید. روشی که گفتید رو امتحان می کنم فقط اگر امکانش هست کمی بیشتر در مورد هر دو روش(دقیق و غیردقیق) توضیح بدید ممنون میشم.
اضافه شده در تاریخ :
clear all
close all
clc
%%%dadehayi ke ma darim A1,A2,C1,C2 hast. mikham bebinam agar C2 ro nadashte basham ba in ravesh takhmin deghate takhmine C2 chetore.
A1 =[ 1:1:21;12.6793372974466,-4.12967970269349,-8.79922814815332,-9.49863811760250,-9.36347270022142,-8.88155561199675,-8.29156368781232,-7.61309050933115,-6.96856627333839,-6.49804953716464,-6.31851786477654,-6.49804953716464,-6.96856627333840,-7.61309050933120,-8.29156368781231,-8.88155561199675,-9.36347270022141,-9.49863811760255,-8.79922814815331,-4.12967970269350,12.6793372974466];
A2 =[ 1:1:21;9.33961230664402,-2.47860648881453,-6.74957424287348,-7.70995443805854,-7.93541724693872,-7.89980119842627,-7.81107877378149,-7.69712585922596,-7.60190202428357,-7.54238794055808,-7.51888668942553,-7.54238794055807,-7.60190202428351,-7.69712585922594,-7.81107877378143,-7.89980119842630,-7.93541724693871,-7.70995443805853,-6.74957424287345,-2.47860648881454,9.33961230664411];
%bedast avardane tabe tabdile A1 va A2 (T1):
T1=A1\A2;
myA2=A1*T1; Aerror=A2-myA2; % Aerror bayad sefr bashe ke kamelan sefr nist. azash badan baraye takhmine C2 estefade mikonam
C1 =[ 1:1:21;0,-3.38030664936050,-6.32623792124926,-8.49065835977602,-9.68207858810535,-9.89949493661167,-9.32623792124927,-8.28432738172276,-7.15942415378164,-6.31285730919791,-6,-6.31285730919790,-7.15942415378164,-8.28432738172276,-9.32623792124926,-9.89949493661167,-9.68207858810535,-8.49065835977602,-6.32623792124927,-3.38030664936050,-2.69422295812418e-15];
C2 =[ 1:1:21;0,-2.01833515014186,-3.89918693812442,-5.52759333799061,-6.82890903921989,-7.77817459305202,-8.39918693812442,-8.75363077684345,-8.92277991065906,-8.98587688176301,-9.00000000000000,-8.98587688176301,-8.92277991065907,-8.75363077684345,-8.39918693812442,-7.77817459305202,-6.82890903921989,-5.52759333799061,-3.89918693812443,-2.01833515014186,-1.59204083889156e-15];
% chon farze ma ine ke C2 ro nadashte bashim, ghablan ostaadam hads zade ke dadehaye azmayeshgahiye ma tori hastan ke C1 ba A1 , va C2 ba A2 ham ye
% rabeteyi daran. pas man migam ke mitoonam az T1 baraye takhmine C2 estefade konam:
myC2=(C1*T1); %shekle C2i ke takhmin zadim
Cerror=myC2-C2
figure;plot(A1(2,,'k'
;hold on
plot(A2(2,,'b'
;hold on
plot(C1(2,,'-.k'
;hold on
plot(C2(2,,'-.b','LineWidth',2);hold on %shekle C2 vagheE
plot(myC2(2,,'-.r','LineWidth',2); %shekle C2i ke takhmin zadim
این کدی که نوشتم رو لطفا کپی و ران کنید، شاید بهتر بتونم منظورمو برسونم.
دیدگاه
-
پاسخ : الاینمنت و nonrigid transformation
سلام
الان متاسفانه متلب نصب ندارم
برنامه تونو خوندم
با توجه به جدول آخر لینک زیر:
Array vs. Matrix Operations
شاید برنامه ای که شما نوشتید با اونچیزی که بحث کردیم متفاوت باشه
یه بررسی بر روی عملگرهای ماتریسی انجام بدید دوباره
شمامیخواید تک تک المانهای A1 و A2 بر هم تقسیم بشن!
با توجه به لینک فوق شما احتمالا باید از عملگر .\ استفاده کنی
یه بررسی انجام بده
و نتایج رو به ما هم بگو :rolleyes:
...
یک برنامه ای رو با متمتیکا نوشتم و به ایمیل شما
که در مشخصاتون گذاشتید فرستادم
فکر کنم به کارتون بیاد1: اللهم صل علی محمد و آل محمد و عجل فرجهم و ...
2: دانش بهتره یا ثروت؟ بدون شعور هیچکدوم!
3: دلا معاش چنان کن که گر بلغزد پای *** فرشتهات به دو دست دعا نگه دارد (حافظ)
دیدگاه
-
پاسخ : الاینمنت و nonrigid transformation
با توجه به گفته های شما
اگه دنبال عدد سازی هستید
میتونید از روش زیر استفاده کنید:
شما میگید که Ci ها با Ai ها ارتباط دارن
از طرفی اگه A1 منتج به A8 بشه
باید C1 منتج به C8 بشه
و برای اینکه C8 تخمین زده بشه از T1 استفاده میکنید
یعنی A1*T1=A8 و شما انتظار دارید که:
C1*T1=C8 بشه
در حالی که در عمل با خطای زیادی روبرو هستید.
با بررسی هایی که بر روی داده های شما انجام دادم
با توجه به اینکه C1 و A1 رابطه شون خیلی نزدیک نیست (با بدست آوردن ضریب همبستگی)
نباید انتظار داده های دقیق داشته باشین!
اما اگر داده های C8 رو داری
و دنبال عدد سازی هستی میتونی روش زیر رو پیاده سازی کنی:
کد:A1 T1 = A8 C1 T2 = A1 C1 T2 T1 = A8 C8 T3 = A8 C1 T2 T1 = C8 T3 C8 = (C1 T2 T1)/T3
1: اللهم صل علی محمد و آل محمد و عجل فرجهم و ...
2: دانش بهتره یا ثروت؟ بدون شعور هیچکدوم!
3: دلا معاش چنان کن که گر بلغزد پای *** فرشتهات به دو دست دعا نگه دارد (حافظ)
دیدگاه
-
پاسخ : الاینمنت و nonrigid transformation
نوشته اصلی توسط arezoomehdiراه دیگه ای جز عددسازی به ذهنتون میرسه؟ اجباری هم به استفاده از T1 برای تخمین C نیست. با هر روشی که بشه، میتونیم با در دست داشتن { Ai و Aj و Cj ، { Ci رو تخمین بزنیم؟
آیا میشه همینجوری یک سیگنال رو تخمین زد؟
به عنوان نمونه در داده هایی که شما داری
A1 اگه به A8 تبدیل شده باشه با تابع تبدیل T1
و طبق گذشته اگه انتظار داشته باشیم که C1 با T1 به C8 تبدیل بشه
درست نیست!
چرا؟
چون رابطه C8 , A8 با رابطه C1 , A1 فرق داره!
A1 , A8 , C1 دو کوهانه متقارن هستن
اما C8 تک کوهانه ست!
بنابراین انتظار از رابطه ای که در فوق گفته شد، بیجاست!
یعنی این فرض که از A1,A8,C1 به C8 میرسیم یه جورایی نادرسته
چون ماهیتا با هم متفاوتن.
مگر اینکه بیایم برای تخمین C8 شرط بذاریم:
[glow=red,1,200]سیگنال C8 تک کوهانه خواهد بود![/glow]
با شرط فوق شاید بشه کارهایی کرد!
...
:read:1: اللهم صل علی محمد و آل محمد و عجل فرجهم و ...
2: دانش بهتره یا ثروت؟ بدون شعور هیچکدوم!
3: دلا معاش چنان کن که گر بلغزد پای *** فرشتهات به دو دست دعا نگه دارد (حافظ)
دیدگاه
دیدگاه