در بسیاری از مدل‌های سیمولینک، داده‌ها از چند مسیر مختلف وارد مدل می‌شوند و لازم است پیش از پردازش نهایی، این داده‌ها در قالب یک بردار یا ماتریس مشترک سازمان‌دهی شوند. قابلیت‌های Vector Concatenate و Matrix Concatenate برای همین هدف طراحی شده‌اند و امکان ترکیب چند سیگنال را در ساختاری واحد فراهم می‌کنند. در سیمولینک، Vector Concatenate برای ایجاد بردارهای غیرمجازی و Matrix Concatenate برای ترکیب آرایه‌ها و ماتریس‌ها در ابعاد مختلف استفاده می‌شود. 

مثال کاربردی الحاق چند بردار

فرض کنید سه بخش مختلف یک سیستم، اطلاعات مربوط به سه گروه از متغیرها را تولید می‌کنند. هر گروه به‌صورت یک بردار جداگانه در اختیار مدل قرار دارد و زیرسیستم بعدی به یک بردار واحد نیاز دارد.

در این شرایط می‌توان از Vector Concatenate استفاده کرد. ورودی‌ها به ترتیب مشخص در کنار یکدیگر قرار می‌گیرند و یک بردار خروجی تشکیل می‌شود. این روش برای ترکیب داده‌های سنسورها، پارامترهای کنترلی و متغیرهای وضعیت سیستم بسیار کاربردی است. 

مزیت مهم این روش آن است که ساختار داده برای بخش بعدی مدل مشخص و منظم باقی می‌ماند و می‌توان بردار حاصل را به یک زیرسیستم پردازشی، الگوریتم کنترلی یا بخش دیگری از مدل منتقل کرد.

ترکیب سیگنال‌های اسکالر برای ایجاد بردار

یکی از ساده‌ترین کاربردها، تبدیل چند سیگنال اسکالر به یک سیگنال برداری است. برای مثال، خروجی چند سنسور مستقل می‌تواند به یک Vector Concatenate ارسال شود تا اطلاعات همه سنسورها در یک ساختار واحد قرار گیرد.

این روش زمانی مفید است که یک الگوریتم به مجموعه‌ای از متغیرها به‌صورت همزمان نیاز داشته باشد. در مدل‌های کنترل چندمتغیره نیز می‌توان خروجی چند حلقه کنترل را به یک بردار مشترک تبدیل کرد.

در چنین کاربردی، Vector Concatenate جایگزین مناسبی برای ساختارهای قدیمی‌تر مانند Mux است؛ MathWorks نیز برای ایجاد سیگنال برداری غیرمجازی، استفاده از Vector Concatenate را به Mux ترجیح می‌دهد. 

مثال ترکیب بردارهای داده سنسورها

تصور کنید یک سیستم مانیتورینگ دارای چند سنسور برای اندازه‌گیری دما، فشار و جریان باشد. هر گروه از سنسورها می‌تواند یک بردار مجزا تولید کند.

با استفاده از الحاق برداری، می‌توان خروجی این گروه‌ها را در یک ساختار واحد قرار داد. نتیجه این کار ایجاد یک رابط داده‌ای منظم میان بخش اندازه‌گیری و الگوریتم پردازش است.

این ساختار به‌خصوص زمانی مفید است که تعداد متغیرها زیاد باشد و بخواهیم به‌جای ایجاد مسیرهای متعدد، مجموعه داده‌ها را به‌صورت یک سیگنال ترکیبی به زیرسیستم بعدی منتقل کنیم.

مثال الحاق افقی ماتریس‌ها

برای ترکیب دو ماتریس در راستای افقی، ماتریس‌ها در کنار یکدیگر قرار می‌گیرند. در این حالت، تعداد سطرهای ماتریس‌های ورودی باید با یکدیگر سازگار باشد. 

این روش برای مثال زمانی کاربرد دارد که دو مجموعه داده دارای تعداد نمونه یکسان باشند، اما هرکدام اطلاعات متفاوتی را در ستون‌های خود نگهداری کنند.

در یک مدل پردازش داده، می‌توان اطلاعات حاصل از دو بخش مختلف را در کنار یکدیگر قرار داد و یک ماتریس بزرگ‌تر ایجاد کرد. این ماتریس سپس می‌تواند به یک الگوریتم پردازشی یا زیرسیستم محاسباتی ارسال شود.

مثال الحاق عمودی ماتریس‌ها

در الحاق عمودی، ماتریس‌های ورودی در امتداد سطرها روی یکدیگر قرار می‌گیرند. بنابراین تعداد ستون‌های ماتریس‌های ورودی باید با یکدیگر سازگار باشد. 

فرض کنید یک سیستم دو مجموعه داده با تعداد ستون‌های یکسان تولید می‌کند، اما تعداد نمونه‌های هر مجموعه متفاوت است. در چنین شرایطی می‌توان داده‌ها را به‌صورت عمودی ترکیب کرد و یک ماتریس واحد ساخت.

این روش در پردازش داده‌های آزمایشگاهی، داده‌های شبیه‌سازی و مدل‌هایی که اطلاعات چند مرحله را در یک ساختار مشترک جمع‌آوری می‌کنند، کاربرد دارد.

مثال الحاق چندبعدی

الحاق در سیمولینک فقط به دو بعد محدود نیست. Matrix Concatenate می‌تواند داده‌ها را در ابعاد بالاتر نیز ترکیب کند. برای نمونه، ماتریس‌های دوبعدی می‌توانند در یک بعد سوم کنار یکدیگر قرار گیرند و یک آرایه چندبعدی ایجاد کنند. 

این قابلیت برای مدل‌هایی که با تصاویر، داده‌های چندکاناله، مجموعه‌های زمانی یا آرایه‌های چندبعدی کار می‌کنند اهمیت زیادی دارد.

در چنین مدل‌هایی، انتخاب صحیح بعد الحاق تعیین می‌کند که داده جدید در چه ساختاری به آرایه خروجی اضافه شود.

مثال ترکیب داده‌های چندکاناله

فرض کنید چند کانال اندازه‌گیری، داده‌هایی با ساختار مشابه تولید می‌کنند. به‌جای پردازش هر کانال به‌صورت کاملاً مستقل، می‌توان آن‌ها را در قالب یک آرایه چندبعدی سازمان‌دهی کرد.

Matrix Concatenate امکان قرار دادن این کانال‌ها در یک ساختار مشترک را فراهم می‌کند. چنین روشی می‌تواند طراحی الگوریتم‌های پردازش چندکاناله را ساده‌تر کند و ارتباط میان داده‌ها و زیرسیستم‌های بعدی را منظم‌تر سازد.

مثال استفاده از الحاق در زیرسیستم‌های For-Each

یکی از کاربردهای جالب Matrix Concatenate، آماده‌سازی داده برای پردازش تکراری در زیرسیستم‌هایی مانند For-Each Subsystem است. خروجی الحاق‌شده می‌تواند به‌عنوان یک سیگنال غیر اسکالر وارد زیرسیستم شود و بخش‌های مختلف آن به‌صورت تکراری پردازش شوند. 

این ساختار در مدل‌هایی که یک الگوریتم مشابه باید روی چند مجموعه داده اجرا شود، بسیار مفید است. در نتیجه، به‌جای ساخت چند مسیر محاسباتی مشابه، می‌توان یک الگوریتم عمومی ایجاد کرد و داده‌ها را به شکل سازمان‌یافته در اختیار آن قرار داد.

مثال ترکیب ماتریس‌ها با داده‌های مختلط

از آنجا که Matrix Concatenate از سیگنال‌های مختلط نیز پشتیبانی می‌کند، می‌توان چند مجموعه داده مختلط را در یک ساختار مشترک قرار داد. این ویژگی در مدل‌های پردازش سیگنال و سیستم‌های مخابراتی اهمیت ویژه‌ای دارد. 

برای مثال، داده‌های مربوط به چند کانال مختلط می‌توانند ابتدا توسط بخش‌های مستقل مدل تولید شوند و سپس با استفاده از الحاق ماتریسی در یک آرایه مشترک قرار گیرند.

کنترل سازگاری ابعاد

یکی از مهم‌ترین نکات هنگام استفاده از Concatenate، بررسی ابعاد ورودی‌هاست. الحاق افقی و عمودی هرکدام محدودیت‌های متفاوتی دارند و ابعاد غیرمشترک باید با یکدیگر سازگار باشند.

همچنین ورودی‌های Matrix Concatenate باید از نظر نوع داده نیز با الزامات بلوک سازگار باشند. در صورت وجود ناسازگاری ابعادی یا نوع داده، مدل ممکن است هنگام کامپایل با خطا مواجه شود. 

تفاوت Vector Concatenate و Matrix Concatenate

Vector Concatenate زمانی مناسب است که هدف اصلی ایجاد یک بردار واحد از چند ورودی باشد. در مقابل، Matrix Concatenate برای ساخت آرایه‌ها و ماتریس‌ها در ابعاد مختلف کاربرد دارد.

در مدل‌های ساده، ترکیب چند خروجی سنسور معمولاً با Vector Concatenate انجام می‌شود؛ اما زمانی که ساختار دوبعدی یا چندبعدی داده اهمیت پیدا می‌کند، Matrix Concatenate انتخاب مناسب‌تری خواهد بود. 

همچنین نباید Concatenate را با Merge یکسان در نظر گرفت. Merge برای ترکیب خروجی‌هایی طراحی شده که در زمان‌های متفاوت یا از زیرسیستم‌های شرطی به‌روزرسانی می‌شوند، در حالی که برای تبدیل چند سیگنال هم‌زمان به یک آرایه یا ماتریس باید از Vector یا Matrix Concatenate استفاده کرد. 

جمع‌بندی

الحاق بردارها و ماتریس‌ها یکی از قابلیت‌های مهم برای سازمان‌دهی داده در سیمولینک است. با استفاده از Vector Concatenate می‌توان چند سیگنال را در قالب یک بردار مشترک قرار داد و با Matrix Concatenate امکان ترکیب ماتریس‌ها و آرایه‌ها در جهت‌های مختلف و حتی ابعاد بالاتر فراهم می‌شود.

درک صحیح تفاوت میان الحاق برداری، الحاق ماتریسی و Merge و همچنین توجه به ابعاد و نوع داده ورودی‌ها، به طراحی مدل‌های منظم‌تر و جلوگیری از خطاهای ساختاری کمک می‌کند. این قابلیت‌ها در پردازش سیگنال، کنترل چندمتغیره، سیستم‌های چندکاناله، پردازش داده و زیرسیستم‌های تکرارشونده کاربرد گسترده‌ای دارند.

کلیدواژه ها : Vector Concatenate-الحاق بردارها- Matrix Concatenate-الحاق ماتریس‌ها- Vector Processing-پردازش برداری- Matrix Processing-پردازش ماتریسی- Matrix Signal-سیگنال ماتریسی- Signal Concatenation-الحاق سیگنال‌ها- Horizontal Concatenation-الحاق افقی- Vertical Concatenation-الحاق عمودی- Multidimensional Concatenation-الحاق چندبعدی- Array Processing-پردازش آرایه- For-Each Subsystem-زیرسیستم For-Each- Complex Signal-سیگنال مختلط- Signal Dimensions-ابعاد سیگنال- Simulink-سیمولینک