تانسورها و ماتریس های چندبعدی در متلب
تانسورها متغیرهایی هستند که ابعاد دارند. اما این که ابعاد دارند به چه معنی است؟ اجازه بدهید چند نوع از تانسورها در متلب را با هم بررسی کنیم تا کاملا متوجه شوید.
آموزش های متلب را در اینجا ببینید: آموزش متلب ویکی مکانیک
هر تانسور یک بعد یا مرتبه دارد. مثلا تانسور مرتبه صفر را در نظر بگیرید. این تانسور مانند نقطه که بی بعد است و از هیچ سمتی امتداد ندارد، فقط شامل یک المان می شود. پس اعداد اسکالر (اعدادی که برداری نیستند. مثلا 1 ، 20 ، -400) همگی یک نوع تانسور نوع 1 هستند. متغیر n را که به صورت زیر تعریف کرده ایم در نظر بگیرید. این متغیر یک تانسور مرتبه صفر است.
حالا برویم سراغ تانسور مرتبه یک. تانسور های مرتبه یک، همان بردار ها هستند. هم بردارهای عمودی و هم بردارهای افقی. دقیقا مانند یک خط که المانی یک بعدی است، بردارها هم یک بعد دارند و تانسورهای یک بعدی هستند. ( در یک جهت گسترش پیدا کرده اند.)
متغیر n این بار یک تانسور دو بعدی است.
تانسورهای دو بعدی، یا مرتبه 2، همان ماتریس ها هستند که با آنها آشنایی داریم. ماتریس ها در دو جهت امتداد پیدا کرده اند و گسترش یافته اند. پس هم تعدادی سطر دارند و هم تعدادی ستون.
تا اینجا کار ما ساده بود. اما از اینجا به بعد تصور تانسورها کمی سخت می شود. تانسورهای سه بعدی در بعدی سوم هم گسترش پیدا کرده اند. به این تانسورها، گاهی ماتریس های سه بعدی هم گفته می شود که ما این موضوع را در ماتریس های سه بعدی در متلب به تفصیل بحث کرده ایم و توضیح داده ایم.
به همین ترتیب می توانیم سراغ مرتبه های بالاتر تانسورها برویم. تانسورهای مرتبه 4 و 5 را هم در شکل زیر مشاهده می کنید. هر کدام از بلوک های کوچک که در شکل مشاهده می کنید، می تواند یک عدد یا کاراکتر باشد.
اما سوالی که حتما برایتان ایجاد شده این است که این تانسورها چه فایده ای دارند؟! البته درباره تانسورهای مرتبه صفر تا 2 (یعنی اعداد اسکالر، بردارها و ماتریس ها) که وضعیت مشخص است و کاربردهای فراوان آنها بر کسی پوشیده نیست. اما تانسورهای مرتبه بالاتر چطور؟
در ادامه با یک مثال بسیار جذاب، یک کاربرد تانسورهای مرتبه بالا را شرح می دهیم.
کاربرد تانسورهای سه بعدی و چهاربعدی در پردازش تصویر و ویدیو
همانطور که می دانید یک تصویر از تعداد زیادی قسمت های بسیار کوچک تر به نام پیکسل تشکیل شده است. هر کدام از این پیکسل ها یک رنگ مخصوص به خود دارد و از کنار هم قرار گرفتن آنها تصویر نهایی تشکیل می شود.
از طرفی یکی از راه های ایجاد رنگ، روش RGB است. در این روش هر کدام از رنگ های قرمز، سبز و آبی با درصد مشخصی ترکیب می شوند و رنگ نهایی را ایجاد می کنند. با تغییر درصد مربوط به هر یک از این رنگ ها، رنگ نهایی هم عوض می شود.
پس یک راه مناسب برای رنگ کردن هر پیکسل این است که سه عدد از 0 تا 1 (که مقدار 1 متناظر با صد در صد است.) به آن پیکسل اختصاص دهیم که به ترتیب درصد رنگ های قرمز، سبز و آبی را مشخص می کنند و از ترکیب آنها رنگ آن پیکسل مشخص می شود.
این کار را می توانیم با یک تانسور مرتبه سوم یا همان ماتریس سه بعدی پیاده کنیم.
به تصویر زیر دقت کنید. این تصویر 9 پیکسل را نشان می دهد. از کنار هم قرار گرفتن سه ماتریس دو بعدی که هر ماتریس مقدار یکی از رنگ های قرمز و سبز و آبی را در هر پیکسل مشخص می کند، رنگ نهایی پیکسل ها تولید می شود. در نتیجه با استفاده از اعداد بین 0 و 1 که در المان های این تانسور سه بعدی در متلب وارد می کنیم، می توانیم پیکسل های یک تصویر و در نهایت کل تصویر را ایجاد کنیم.
حالا یک فیلم یا ویدیو چگونه ایجاد می شود؟ معلوم است! از کنار هم قرار گرفتن تصاویر در طول زمان. پس محور زمان هم وارد محاسبات ما می شود. در نتیجه به یک بعد دیگر هم که همان بعد زمان است نیاز داریم. پس به یک تانسور مرتبه 4 نیاز داریم.
این تانسور مرتبه 4 از تعدادی تانسور مرتبه 3 تشکیل می شود که هر کدام از آنها همانطور که گفتیم یک تصویر را مشخص می کند. این تانسور های مرتبه 3 هنگامی که در طول زمان در کنار هم قرار بگیرند و یک تانسور مرتبه 4 را تشکیل دهند می توانند برای نمایش یک ویدیو به ما کمک کنند.
این یکی از مهم ترین کاربردهای تانسورهای مرتبه های بالاتر از 2 بود. به صورت کلی هنگامی که مرتبه تانسورها بالاتر می رود کار کردن با آنها پیچیده تر می شود و نیاز به تسلط بالاتری وجود خواهد داشت.