در بسیاری از مدلهای مهندسی، هدف از استفاده از Lookup Table این نیست که مقدار خروجی بین چند نقطه تخمین زده شود، بلکه لازم است مستقیماً به یک مقدار مشخص از یک جدول چندبعدی دسترسی پیدا کنیم. در چنین شرایطی Direct Lookup Table (n-D) میتواند گزینه مناسبی در سیمولینک باشد.
این بلوک برخلاف Lookup Tableهای مبتنی بر درونیابی، برای دسترسی مستقیم به دادههای ذخیرهشده در جدول طراحی شده است. بنابراین زمانی کاربرد دارد که ورودیها بتوانند بهعنوان شاخص یا Index برای انتخاب داده مورد استفاده قرار گیرند.
مفهوم Direct Lookup Table n-D
بلوک Direct Lookup Table (n-D) یک جدول چندبعدی از دادهها را در اختیار مدل قرار میدهد و با دریافت شاخصهای مربوط به هر بُعد، مقدار موردنظر را مستقیماً از جدول استخراج میکند.
برای مثال، اگر یک جدول سهبعدی برای ذخیره اطلاعات عملکرد یک تجهیز ایجاد شده باشد، سه ورودی میتوانند مشخص کنند که کدام موقعیت از هر بُعد باید انتخاب شود.
در این حالت، خروجی حاصل از ترکیب شاخصهای ورودی، یک مقدار مشخص از Table Data خواهد بود.
نکته مهم این است که این بلوک برخلاف n-D Lookup Table عملیات Interpolation را برای پیدا کردن مقدار بین نقاط جدول انجام نمیدهد. (mathworks.com)
تفاوت Direct Lookup با n-D Lookup Table
تفاوت اصلی این دو ساختار در نحوه برخورد با ورودی است.
در n-D Lookup Table، ورودی میتواند بین Breakpointها قرار بگیرد و بلوک با استفاده از روش انتخابشده، مقدار مناسب را از طریق درونیابی محاسبه کند.
اما در Direct Lookup Table n-D، ورودیها بهعنوان شاخصهای دسترسی به عناصر جدول استفاده میشوند.
بنابراین Direct Lookup زمانی مناسبتر است که ارتباط میان ورودی و موقعیت دادهها از قبل مشخص باشد و نیازی به تخمین مقدار بین نقاط وجود نداشته باشد. (mathworks.com)
ساختار جدول مستقیم چندبعدی
ساختار Direct Lookup Table n-D بر اساس یک آرایه چندبعدی از دادهها شکل میگیرد.
هر بُعد جدول دارای تعدادی عنصر است و هر ورودی مشخص میکند کدام عنصر از بُعد مربوطه باید انتخاب شود.
در یک جدول دوبعدی، دو شاخص برای تعیین موقعیت داده مورد نیاز است. با اضافه شدن بُعد سوم، یک شاخص دیگر نیز مورد نیاز خواهد بود و همین روند میتواند برای ابعاد بیشتر ادامه پیدا کند.
در نتیجه، Direct Lookup Table n-D میتواند برای دسترسی مستقیم به دادههای چندبعدی استفاده شود.
Index چیست؟
Index در Direct Lookup نقش کلید دسترسی به داده را دارد.
هر Index یک موقعیت مشخص در یکی از ابعاد جدول را تعیین میکند. ترکیب Indexهای ورودی، موقعیت نهایی داده موردنظر را مشخص میکند.
بنابراین برخلاف Breakpoint که محدوده فیزیکی یک متغیر را توصیف میکند، Index بیشتر با موقعیت داده در آرایه ارتباط دارد.
این تفاوت مفهومی در هنگام طراحی مدل اهمیت زیادی دارد.
چه زمانی Direct Lookup مناسب است؟
استفاده از Direct Lookup زمانی منطقی است که:
- ورودیها از قبل به Index تبدیل شده باشند.
- دادهها بهصورت گسسته و طبقهبندیشده ذخیره شده باشند.
- نیازی به Interpolation وجود نداشته باشد.
- هر Index مستقیماً یک موقعیت مشخص در جدول را تعیین کند.
- سرعت دسترسی مستقیم به داده اهمیت داشته باشد.
در چنین شرایطی، استفاده از یک Lookup Table دارای درونیابی ممکن است غیرضروری باشد.
جدولهای گسسته و Direct Lookup
یکی از کاربردهای مهم Direct Lookup، مدلسازی سیستمهایی است که رفتار آنها به حالتهای گسسته وابسته است.
برای مثال، یک سیستم کنترل ممکن است برای ترکیب مشخصی از وضعیتها، پارامتر مشخصی داشته باشد. در این حالت بهجای محاسبه یک مقدار پیوسته، میتوان مقدار موردنظر را مستقیماً از جدول انتخاب کرد.
این ساختار برای State-Based Modeling و سیستمهایی که دارای حالتهای مشخص هستند، کاربرد مناسبی دارد.
Direct Lookup در سیستمهای کنترلی
در سیستمهای کنترل، گاهی لازم است برای مجموعهای از شرایط مشخص، مقدار پارامتر مربوطه انتخاب شود.
برای مثال، یک جدول میتواند شامل تنظیمات مختلف یک کنترلکننده باشد و شاخصهای ورودی مشخص کنند که کدام تنظیم باید مورد استفاده قرار گیرد.
در این شرایط، Direct Lookup میتواند نقش یک لایه دسترسی سریع به پارامترهای از پیش تعریفشده را ایفا کند.
Direct Lookup و جداول چندبعدی
مزیت مهم Direct Lookup n-D زمانی مشخص میشود که دادهها دارای ساختار چندبعدی باشند.
برای مثال، یک جدول میتواند اطلاعات مربوط به چند حالت کاری یک تجهیز را ذخیره کند. هر بُعد میتواند نشاندهنده یک عامل مانند وضعیت عملکرد، حالت کنترلی یا کلاس عملیاتی باشد.
ورودیها در این ساختار، موقعیت موردنظر را در هر بُعد مشخص میکنند و خروجی از محل متناظر در جدول استخراج میشود.
تنظیم تعداد ابعاد
تعداد ورودیهای Direct Lookup باید با ساختار جدول هماهنگ باشد.
اگر جدول دارای چند بُعد باشد، هر ورودی وظیفه انتخاب موقعیت در یک بُعد را بر عهده دارد.
بنابراین هنگام طراحی مدل باید ارتباط میان تعداد ورودیها و تعداد ابعاد Table Data بهدقت بررسی شود. ناسازگاری میان ساختار داده و شاخصهای ورودی میتواند باعث ایجاد خطا در شبیهسازی یا تولید کد شود.
محدوده معتبر Index
هر Index باید در محدوده معتبر بُعد مربوط به خود قرار داشته باشد.
اگر شاخصی کمتر یا بیشتر از محدوده مجاز باشد، باید رفتار مناسب برای شرایط خارج از محدوده مشخص شود.
در تنظیمات Direct Lookup، نحوه برخورد با Indexهای خارج از محدوده میتواند بر اساس نیاز مدل تعیین شود. بنابراین مدیریت محدوده Indexها یکی از نکات مهم در طراحی این بلوک است. (mathworks.com)
تفاوت Out-of-Range با Extrapolation
در Lookup Tableهای معمولی، خارج شدن ورودی از محدوده Breakpoint میتواند موضوع Extrapolation را مطرح کند.
اما در Direct Lookup، مفهوم اصلی Index Validity است.
یعنی مسئله اصلی این است که آیا شاخص ورودی به یک عنصر معتبر از جدول اشاره میکند یا خیر.
از آنجا که Direct Lookup عملیات Interpolation انجام نمیدهد، مفهوم Extrapolation به شکل Lookup Tableهای پیوسته مطرح نیست.
Data Types در Direct Lookup
نوع داده Indexها اهمیت زیادی دارد.
در Direct Lookup، ورودیها باید بتوانند بهعنوان شاخص معتبر برای دسترسی به جدول مورد استفاده قرار گیرند. به همین دلیل نوع داده و نحوه تفسیر آن باید با تنظیمات بلوک و ساختار Table Data سازگار باشد.
در مدلهای مربوط به سیستمهای Embedded و تولید کد، انتخاب صحیح Data Type میتواند روی حافظه و عملکرد اجرای مدل نیز اثرگذار باشد.
استفاده از دادههای MATLAB Workspace
Table Data را میتوان از دادههایی که در MATLAB Workspace قرار دارند تأمین کرد.
این قابلیت بهخصوص زمانی مفید است که دادهها از یک منبع خارجی تهیه شده باشند یا قبل از اجرای مدل توسط فرآیند دیگری تولید شوند.
به این ترتیب، جدول میتواند از مدل جدا نگه داشته شود و مدیریت دادهها سادهتر انجام گیرد.
Direct Lookup و دادههای بزرگ
در پروژههایی که حجم Table Data زیاد است، Direct Lookup میتواند روش مناسبی برای دسترسی به دادهها باشد؛ زیرا عملیات اصلی آن انتخاب مستقیم عنصر جدول است.
با این حال، بزرگ شدن تعداد ابعاد و اندازه هر بُعد میتواند حجم داده مورد نیاز را افزایش دهد.
بنابراین قبل از طراحی یک جدول چندبعدی بزرگ، باید ساختار داده و میزان حافظه مورد نیاز بررسی شود.
مزیت سرعت دسترسی مستقیم
یکی از مزایای مهم Direct Lookup حذف محاسبات مربوط به Interpolation است.
در صورتی که Indexها مستقیماً موقعیت داده را مشخص کنند، بلوک میتواند بدون انجام محاسبات اضافی مربوط به تخمین بین نقاط، مقدار موردنظر را بازیابی کند.
این ویژگی در کاربردهایی که سرعت اجرا اهمیت زیادی دارد، میتواند مفید باشد.
کاربرد در شبیهسازی بلادرنگ
در Real-Time Simulation زمان اجرای هر مرحله اهمیت زیادی دارد.
اگر دادهها بهصورت گسسته در جدول ذخیره شده باشند و نیازی به محاسبات درونیابی وجود نداشته باشد، Direct Lookup میتواند ساختار سادهتری برای دسترسی به داده فراهم کند.
به همین دلیل این روش میتواند در برخی مدلهای کنترلی و Embedded مورد توجه قرار گیرد.
Direct Lookup و تولید کد
Direct Lookup Table n-D تنها برای شبیهسازی استفاده نمیشود و میتواند در فرآیند Code Generation نیز مورد استفاده قرار گیرد.
در کاربردهای Embedded، نحوه تعریف دادههای جدول و نوع Indexها میتواند روی ساختار حافظه و کد تولیدشده اثرگذار باشد.
بنابراین طراحی جدول باید از ابتدا با محدودیتهای سختافزار مقصد هماهنگ شود.
تفاوت Direct Lookup و Prelookup
Prelookup برای پیدا کردن موقعیت یک ورودی نسبت به Breakpointها استفاده میشود.
در این حالت، هدف تعیین موقعیت ورودی و آمادهسازی اطلاعات لازم برای عملیات Interpolation است.
اما Direct Lookup به Breakpoint و Interpolation وابسته نیست و مستقیماً از Index برای دسترسی به داده استفاده میکند.
بنابراین این دو روش برای مسائل متفاوتی طراحی شدهاند و انتخاب میان آنها باید بر اساس ماهیت داده و نحوه ورود اطلاعات به مدل انجام شود.
Direct Lookup در برابر جدولهای دارای Interpolation
اگر دادهها بهصورت مجموعهای از نقاط گسسته باشند و مقدار موردنیاز دقیقاً در یکی از این نقاط قرار داشته باشد، Direct Lookup انتخاب مناسبی است.
اما اگر ورودی در فاصله بین نقاط قرار بگیرد و لازم باشد مقدار میانی تخمین زده شود، استفاده از Lookup Table دارای Interpolation مناسبتر خواهد بود.
بنابراین سؤال اصلی هنگام انتخاب بلوک این است که آیا دسترسی مستقیم به داده مورد نیاز است یا تقریب مقدار بین دادهها.
کاربرد در سیستمهای طبقهبندیشده
Direct Lookup میتواند برای سیستمهایی که ورودیها به دستهها یا حالتهای مشخص تقسیم شدهاند نیز مفید باشد.
برای نمونه، یک سیستم میتواند چند حالت کاری داشته باشد و هر حالت به مجموعه مشخصی از پارامترها مرتبط باشد.
در چنین ساختاری، Indexها میتوانند حالت سیستم را مشخص کنند و Direct Lookup پارامتر متناظر را از جدول استخراج کند.
نکات طراحی جدول مستقیم
هنگام طراحی Direct Lookup Table n-D بهتر است چند موضوع بهصورت همزمان بررسی شود:
- تعداد واقعی ابعاد مورد نیاز
- تعداد عناصر هر بُعد
- محدوده معتبر Indexها
- نوع داده Index
- نوع داده Table Data
- حجم حافظه مورد نیاز
- نحوه مدیریت Indexهای خارج از محدوده
- نیاز یا عدم نیاز به Interpolation
- الزامات تولید کد
- سرعت مورد نیاز برای اجرای مدل
این موارد باعث میشوند ساختار جدول از ابتدا با نیازهای مدل هماهنگ باشد.
چه زمانی نباید از Direct Lookup استفاده کرد؟
اگر ورودیها مقادیر پیوسته داشته باشند و معمولاً بین نقاط تعریفشده جدول قرار بگیرند، Direct Lookup انتخاب مناسبی نیست.
در چنین شرایطی استفاده از n-D Lookup Table و روش مناسب Interpolation میتواند نتیجه دقیقتری ایجاد کند.
همچنین اگر رابطه بین متغیرها را بتوان با یک مدل ریاضی ساده و کمهزینه نمایش داد، ممکن است Lookup Table اساساً بهترین گزینه نباشد.
جمعبندی
Direct Lookup Table n-D یکی از روشهای مهم برای دسترسی مستقیم به دادههای چندبعدی در Simulink است. تفاوت اساسی آن با Lookup Tableهای معمولی این است که بهجای انجام عملیات درونیابی، از ورودیها بهعنوان Index استفاده میکند تا عنصر موردنظر مستقیماً از جدول انتخاب شود.
این ساختار برای دادههای گسسته، حالتهای مختلف سیستم، جداول پارامتری و کاربردهایی که سرعت دسترسی اهمیت دارد، بسیار مناسب است. همچنین میتواند در مدلهای Real-Time و Embedded که کاهش محاسبات غیرضروری اهمیت دارد، مورد استفاده قرار گیرد.
در نهایت، انتخاب Direct Lookup باید بر اساس ماهیت داده انجام شود. اگر دادهها بهصورت نقاط مشخص و گسسته تعریف شدهاند و هر ورودی مستقیماً یک موقعیت معتبر در جدول را تعیین میکند، Direct Lookup انتخاب مناسبی است؛ اما اگر نیاز به تخمین مقادیر بین نقاط وجود داشته باشد، باید از ساختارهای Lookup Table مبتنی بر Interpolation استفاده کرد.
کلیدواژه ها : Direct Lookup Table n-D-جدول جستجوی مستقیم چندبعدی-Direct Lookup Table-جدول جستجوی مستقیم-n-D Lookup Table-جدول جستجوی چندبعدی-Multidimensional Lookup Table-جدول جستجوی چندبعدی-Index-شاخص-Table Data-داده جدول-Direct Indexing-شاخصگذاری مستقیم-Index-Based Lookup-جستجوی مبتنی بر شاخص-Lookup Table-جدول جستجو-Simulink Lookup Table-جدول جستجوی سیمولینک-Discrete Data-داده گسسته-Discrete States-حالتهای گسسته-State-Based Modeling-مدلسازی مبتنی بر حالت-Data Mapping-نگاشت داده-Multidimensional Data-داده چندبعدی-Array Indexing-شاخصگذاری آرایه-Table Index-شاخص جدول-Index Range-محدوده شاخص-Out of Range-خارج از محدوده-Data Type-نوع داده-Memory Optimization-بهینهسازی حافظه-Computational Efficiency-کارایی محاسباتی-Real-Time Simulation-شبیهسازی بلادرنگ-Embedded Systems-سیستمهای نهفته-Code Generation-تولید کد-Model-Based Design-طراحی مبتنی بر مدل-Direct Lookup Optimization-بهینهسازی جستجوی مستقیم-n-D Table-جدول n بعدی-Discrete Lookup-جستجوی گسسته-Parameter Table-جدول پارامتر-Parameter Mapping-نگاشت پارامتر-Control System-سیستم کنترل-Embedded Control-کنترل نهفته-Table-Based Modeling-مدلسازی مبتنی بر جدول-Table Data Management-مدیریت دادههای جدول-Simulink Modeling-مدلسازی سیمولینک-Direct Lookup vs Interpolation-مقایسه جستجوی مستقیم و درونیابی-Interpolation-درونیابی-Prelookup-پیشجستجو-Lookup Table Performance-عملکرد جدول جستجو-Real-Time Lookup-جستجوی بلادرنگ-Array Data-داده آرایهای-Discrete Parameter Selection-انتخاب پارامتر گسسته