کد تبدیل زوایه دو قطبی به یک قطبی در متلب
همانطور که می دونید متلب زوایه 360 درجه را به شکل دو بخش منفی و مثبت 180 درجه ای نشون می ده، این مسئله باعث بروز مشکل در پیاده سازی برخی الگوریتمهایی می شه که با زوایه کار می کنند، به عنوان مثال زمانی که شما تعدادی نقاط پخش شده در فضا دارید و بخواهید که کوتاهترین مسیر بین آنها را پیدا کنید، یک روش ساده مرتب سازی این نودها بر مبنای مختصات قطبی و خصوصا زوایه هستش، در چنین مواقعی نقاط قطبی دو بخشی پاسخگو نیست بر همین اساس من یک تابع ساده را برای حل این شکل نوشتم، که ورودی اون زوایه دو بخشی(0تا 180 و 0تا -180) و خروجی اون زوایه یک بخشی 0تا 360 درجه هستش.
کد متلب این تابع:
%convert 2 pole angle to 1 pole degree or radian %angl=Angle2pol_To_1pol([5,95,-95,0],2) %angl=Angle2pol_To_1pol( -95,2) function angl=Angle2pol_To_1pol(angl,type) if nargin==1 type=1; end switch type case 1% radian type angl=mod(angl,2*pi); miInd=angl<0; angl(miInd)=(2*pi)+angl(miInd); case 2 angl=mod(angl,360); miInd=angl<0; angl(miInd)=(360)+angl(miInd); end end
نمونه استفاده از این تابع و خروجی حاصل در تصویر زیر ابتدا مختصات دکارتی نکات درهم و برم به مختصات قطبی ان تبدیل شده و سپس با تبدیل زوایه دو بخشی به زاوایه یک بخشی 360 درجه و مرتب سازی آن بر اساس زاویه، شکل سمت چپ به شکل سمت راست تغییر پیدا کرده، این روش بسیار ساده می تونه برای پیدا کردن کوتاهترین مسیر هم مورد استفاده قرار بگیره.