نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی. پرتال اطلاعاتی

عملیات با آرایه های متلب. آرایه های عددی

عنصر سوم آرایه را تغییر خواهیم داد. یا بعد از مقدمه:

» al(2)=(al(1)+al(3))/2;

عنصر دوم آرایه برابر با میانگین حسابی عناصر اول و سوم خواهد بود. نوشتن یک عنصر ناموجود کاملاً معتبر است - به معنای افزودن یک عنصر جدید به یک آرایه از قبل موجود است:

با اعمال تابع طول به آرایه a1 پس از انجام این عمل، متوجه می شویم که تعداد عناصر آرایه به چهار عنصر افزایش یافته است:

» طول (al) ans = 4

همین عمل - "طولانی کردن آرایه a1" - می تواند با استفاده از عملیات الحاق انجام شود:

شما می توانید یک آرایه را با فهرست کردن همه عناصر آن به صورت جداگانه تعریف کنید:

» a3(1)=67; a3(2)=7.8; a3(3)=0.017;

با این حال، این روش ایجاد کارآمد نیست.

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

»diap=3.7:0.3:8.974;

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

برای ایجاد آرایه دو بعدی(ماتریس) می توانید از عملیات الحاق نیز استفاده کنید. عناصر آرایه یکی پس از دیگری تایپ می شوند

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

از صفحه کلید وارد شوید:

» a=

ENTER را فشار دهید، دریافت می کنیم:

ماتریس حاصل از a با اندازه 3x2 (اولین تعداد ردیف ها را نشان می دهد، دومی - تعداد ستون ها) را نیز می توان با الحاق عمودی بردارهای ردیف تشکیل داد:

»a=[;;];

یا الحاق افقی ستون-بردارها:

» a=[,];

ساختار آرایه های ایجاد شده را می توان با استفاده از دستور whos(نام آرایه)، بعد آرایه توسط تابع ndims و اندازه آرایه بر اساس اندازه پیدا کرد.

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

» a(1,1)=1; a(1,2)=2; a(2,1)=3;

» a(2,2)=4; a(3,1)=5; a(3,2)=6;

با این حال، اگر قبل از شروع نوشتن عناصر آرایه، یک آرایه ایجاد کنید، بسیار کارآمدتر خواهد بود سایز درستتوابع یک (m، n) یا صفر (m، n)، پر شده با یک یا صفر (m تعداد ردیف‌ها، n تعداد ستون‌ها است). هنگامی که این توابع فراخوانی می شوند، حافظه از قبل برای آنها تخصیص داده می شود اندازه داده شدهآرایه، پس از آن تجویز تدریجی عناصر با ضروری است

13 مقدار نیازی به بازسازی ساختار حافظه اختصاص داده شده برای آرایه ندارد.

این توابع همچنین می توانند هنگام تعیین آرایه هایی با ابعاد دیگر استفاده شوند.

اگر پس از تشکیل آرایه X، باید اندازه آن را بدون تغییر عناصر آرایه تغییر دهید، می توانید از تابع تغییر شکل (X, M, N) استفاده کنید که در آن M و N اندازه های جدید آرایه X هستند.

توضیح عملکرد این تابع تنها بر اساس نحوه ذخیره سازی عناصر آرایه ها در حافظه کامپیوتر توسط سیستم متلب امکان پذیر است. آنها را در یک ناحیه پیوسته از حافظه به ترتیب ستون ذخیره می کند: ابتدا عناصر ستون اول و سپس عناصر ستون دوم و غیره قرار می گیرند. علاوه بر داده های واقعی (عناصر آرایه)، حافظه رایانه نیز ذخیره می شود اطلاعات کنترلی: نوع آرایه (مثلاً دوتایی)، ابعاد و اندازه آرایه، سایر اطلاعات خدمات. این اطلاعات برای تعیین مرزهای ستون ها کافی است. نتیجه این است که برای تغییر شکل ماتریس، فقط تغییر کافی است اطلاعات خدماتو به داده های خود دست نزنید.

شما می توانید ردیف های یک ماتریس را با ستون های آن با استفاده از عملیات انتقال که با علامت مشخص می شود تعویض کنید." (نقطه و آپستروف).

»A=;

"B=A."

عمل " (آپوستروف) جابجایی را برای ماتریس های واقعی و جابجایی را با صرف مختلط همزمان برای ماتریس های مختلط انجام می دهد.

اشیایی که متلب با آنها کار می کند آرایه هستند. حتی یک عدد داده شده در نمایش داخلی متلب یک آرایه است،

متشکل از یک عنصر متلب به شما اجازه می دهد تا محاسبات را با آرایه های عظیم اعداد به راحتی و با اعداد تک انجام دهید و این یکی از قابل توجه ترین و قابل توجه ترین موارد است. مزایای مهمسیستم های متلب نسبت به سایرین بسته های نرم افزاری، متمرکز بر محاسبات و برنامه نویسی است. علاوه بر حافظه مورد نیاز برای ذخیره عناصر عددی (هر کدام 8 بایت در مورد اعداد واقعی و 16 بایت در مورد اعداد مختلط MATLAB هنگام ایجاد آرایه ها به طور خودکار حافظه را برای اطلاعات کنترلی اختصاص می دهد.

محاسبات آرایه

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

عملیات جمع و تفریق ماتریس (همانطور که از جبر خطی می دانید) با علامت های استاندارد + و - نشان داده می شوند.

ماتریس های A و B را تعریف کنید و عملیات جمع ماتریس را انجام دهید:

» A=; B=;

» A+B

اگر از عملوندها استفاده شود اندازه های مختلف، یک پیام خطا صادر می شود، مگر اینکه یکی از عملوندها اسکالر باشد. هنگام انجام عملیات A + اسکالر (A یک ماتریس است)، سیستم اسکالر را به آرایه‌ای به اندازه A گسترش می‌دهد، که عنصر به عنصر به A اضافه می‌شود.

15 برای ضرب عنصری و تقسیم عنصری آرایه ها

با همان اندازه، و همچنین قدرت عنصر به عنصر آرایه ها، از عملیات استفاده می شود که با ترکیب دو کاراکتر نشان داده می شود: .*، ./، و

.^. استفاده از ترکیب نمادها با این واقعیت توضیح داده می شود که نمادهای * و / عملیات جبر خطی ویژه بر روی بردارها و ماتریس ها را نشان می دهند.

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

این عملیات عبارت A./B به ماتریسی با عناصر A (k, m) / B (k, m) و عبارت A. \ B به ماتریسی با عناصر B (k, m) / A (k, متر).

علامت * به ضرب ماتریس ها و بردارها به معنای جبر خطی اختصاص دارد.

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

که در آن A یک ماتریس مربع داده شده به اندازه N x N است، b یک بردار ستون معین به طول N است، سپس برای یافتن بردار ستون مجهول y کافی است عبارت A \ b را محاسبه کنید (این معادل عمل است: A -1 B).

مسائل معمولی هندسه تحلیلی در فضا، مربوط به یافتن طول بردارها و زوایای بین آنها، با محاسبه حاصلضرب های اسکالر و برداری، به راحتی با ابزارهای مختلف سیستم متلب حل می شوند. برای مثال، برای یافتن حاصل ضرب بردارها در نظر گرفته شده است عملکرد ویژهصلیب، به عنوان مثال:

»u=; v=;

»متصلیب(u,v)

16 حاصل ضرب اسکالر بردارها را می توان با استفاده از تابع محاسبه کرد

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

حاصل ضرب نقطه ای دو بردار u و v را محاسبه می کند. حاصل ضرب نقطه ای را می توان به صورت زیر محاسبه کرد: u*v′.

طول یک بردار با استفاده از حاصل ضرب نقطه و تابع جذر محاسبه می شود، برای مثال:

» sqrt(sum(u.*u))

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

در میان توابعی که ماتریس‌هایی با ویژگی‌های داده شده تولید می‌کنند، ما در اینجا به تابع چشمی که ماتریس‌های مربع واحد تولید می‌کند و همچنین تابع رند که به طور گسترده در عمل استفاده می‌شود، اشاره می‌کنیم و آرایه‌ای با عناصر تصادفی ایجاد می‌کنیم که به طور یکنواخت در بازه 0 توزیع شده‌اند. به 1. مثلاً عبارت

یک آرایه 3x3 از اعداد تصادفی با عناصری که به طور مساوی در فاصله 0 تا 1 توزیع شده اند تولید می کند.

اگر این تابع را با دو آرگومان فراخوانی کنید، برای مثال R=rand(2,3)، یک ماتریس 2x3 R از عناصر تصادفی دریافت می کنید. هنگامی که رند با سه یا چند آرگومان اسکالر فراخوانی می شود، آرایه های چند بعدی از اعداد تصادفی تولید می شوند.

تعیین کننده ماتریس مربعبا استفاده از تابع det محاسبه می شود. از جمله توابعی که ساده ترین محاسبات را روی آرایه ها انجام می دهند،

علاوه بر موارد فوق توابع جمع، به تابع prod هم اشاره می کنیم که در همه چیز شبیه تابع مجموع است، فقط مجموع عناصر را محاسبه نمی کند، بلکه حاصل ضرب آنها را محاسبه می کند. توابع max و min به ترتیب بیشترین و حداقل عناصر آرایه ها را جستجو می کنند. برای بردارها، یک تک برمی گردند مقدار عددیو برای ماتریس ها مجموعه ای از عناصر اکستریمال محاسبه شده برای هر ستون را تولید می کنند. تابع sort عناصر آرایه های یک بعدی را به ترتیب صعودی مرتب می کند و برای ماتریس ها برای هر ستون جداگانه مرتب می کند.

در نهایت، در نظر بگیرید فرصت منحصر به فردزبان M سیستم متلب محاسبات گروهی را روی آرایه ها با استفاده از روش معمول انجام می دهد توابع ریاضیکه در زبان های برنامه نویسی سنتی فقط با آرگومان های اسکالر کار می کنند. در نتیجه، با نمادهای بسیار فشرده که برای تایپ راحت است حالت تعاملیکار با پنجره فرمانسیستم متلب، امکان انجام محاسبات زیاد را دارد. به عنوان مثال، تنها دو وجود دارد عبارات کوتاه

» x=0:0.01:pi/2; y=sin(x);

مقادیر تابع sin را همزمان در 158 نقطه محاسبه کنید و دو بردار x و y را با 158 عنصر تشکیل دهید.

نمودار توابع

قابلیت های گرافیکی سیستم متلب قدرتمند و متنوع است. بیایید آسان ترین ویژگی ها (گرافیک های سطح بالا) را بررسی کنیم.

از دو بردار x و y تشکیل دهید:

» x=0:0.01:2; y=sin(x);

فراخوانی تابع:

»طرح (x,y)

و نموداری از تابع را روی صفحه دریافت خواهید کرد (شکل 1).

برنج. 1. نمودار تابع y=sin(x)

متلب نشان می دهد اشیاء گرافیکیدر پنجره های گرافیکی ویژه با عبارت Figure در عنوان.

بدون حذف اولین پنجره گرافیکی از صفحه نمایش، عبارات را از صفحه کلید وارد کنید

» z=cos(x);

» طرح (x,z)

و دریافت کنید برنامه جدیدتوابع در همان پنجره گرافیکی (در این مورد، محورهای مختصات قدیمی و نمودار ناپدید می شوند - این را می توان با دستور clf نیز به دست آورد، دستور cla فقط نمودار را حذف می کند و محورهای مختصات را به آنها می رساند. محدوده های استاندارداز 0 تا 1).

اگر لازم است نمودار دوم را "در بالای نمودار اول" بکشید، سپس قبل از تماس ثانویه عملکرد گرافیکینمودار، باید دستور hold on را اجرا کنید که برای نگه داشتن پنجره گرافیکی فعلی طراحی شده است:

» x=0:0.01:2; y=sin(x);

»طرح (x,y)

» z=cos(x);

" صبر کن

» طرح (x,z)

تقریباً همین اتفاق می افتد (شکل 2) اگر تایپ کنید:

» x=0:0.01:2; y=sin(x); z=cos(x);

»طرح (x,y,x,z)

برنج. 2. نمودارهای توابع y=sin(x)، z=cos(x)، ساخته شده در یک پنجره گرافیکی

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

راه حل دوم برای نمایش نمودارهای متعدد بدون محدوده محورهای متضاد، استفاده از تابع فرعی است. این ویژگی اجازه می دهد

منطقه خروجی تقسیم 20 em اطلاعات گرافیکیبه چندین منطقه فرعی

در هر کدام می توانید نمودارهایی از توابع مختلف را نمایش دهید.

برای مثال، برای محاسبات قبلی با توابع sin و cos، نمودارهای این دو تابع را در زیر دامنه اول رسم کنید و تابع exp(x) را در زیر دامنه دوم همان پنجره گرافیکی رسم کنید (شکل 3):

» w=exp(x);

» subplot(1,2,1); نمودار (x,y,x,z)

» subplot(1,2,2); نمودار (x,w)

برنج. 3. نمودارهای توابع y=sin(x)، z=cos(x) و w=exp(x)، ساخته شده در دو زیر ناحیه از یک پنجره گرافیکی

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

شاخص ها. عنصر آرایه A که در محل تلاقی ردیف i و ستون j قرار دارد به صورت A(i,j) نشان داده می شود.

مثال
ماتریس magic(4) را به صورت آرایه A در نظر بگیرید:

الف = جادو (4)
A =

16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1

سپس A(4,3) عنصری است که در تقاطع ردیف 4 و ستون 3 برابر با 15 قرار دارد.

همچنین می توانید مجموع عناصر ستون چهارم را محاسبه کنید

A(1، 4) + A(2، 4) + A(3، 4) + A(4، 4)
ans = 34

عناصر آرایه A را می توان با استفاده از یک شاخص واحد، A(k) ارجاع داد. این روش معمول برای اشاره به عناصر بردار است. اما می توان به عناصر یک آرایه دو بعدی نیز اشاره کرد که در این صورت این آرایه به عنوان یک بردار ستون بلند تشکیل شده از ستون های آرایه اصلی در نظر گرفته می شود. در این مثال، A(12) راه دیگری برای ارجاع به مقدار 15 مربوط به عنصر A(4، 3) است.

اگر تلاشی برای دسترسی به عنصری خارج از ماتریس انجام شود، برنامه یک خطا ایجاد می کند:

t = A (4، 5)
؟؟؟ اندیس ها از بعد ماتریس بیشتر شده اند. شاخص از بعد ماتریس بیشتر است.

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

مثال:

X=A;
X(4، 5) = 17

X=

16 2 3 13 0
5 11 10 8 0
9 7 6 12 0
4 14 15 1 17

انتخاب زیر بلوک های یک آرایه. اگر از دو نقطه در عبارات شاخص استفاده می کنید، می توانید به زیر بلوک های آرایه مراجعه کنید. بنابراین عبارت شاخص A(1:k,j) به بلوکی از عناصر k در ستون j اشاره دارد.

مثال:

پاسخ (1:4،3)
ans =

3
10
6
15

ستون 3 ماتریس جادویی (4) در اینجا برجسته شده است.

اپراتور

جمع (A(1:4، 3))
ans = 34

مجموع عناصر ستون 3 را محاسبه می کند.

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

جمع (A(:،3))
ans = 34

همچنین، از نسخه 5.0، آخرین سطر یا ستون یک آرایه را می توان با استفاده از ارجاع داد کلمه کلیدیپایان. بنابراین اپراتور

جمع (A(:، پایان))
ans = 34

مجموع عناصر در آخرین ستون ماتریس A را محاسبه می کند.

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

مثال.
با استفاده از ماتریس A برابر با magic(4)، یک ماتریس B جدید به اندازه 8x8 تشکیل می دهیم

B=
B=

16 2 3 13 48 34 35 45
5 11 10 8 37 43 42 40
9 7 6 12 41 39 38 44
4 14 15 1 36 46 47 33
64 50 51 61 32 18 19 29
53 59 58 56 21 27 26 24
57 55 54 60 25 23 22 28
52 62 63 49 20 30 31 17

این ماتریس از چهار بلوک 4*4 تشکیل شده است

16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
48 35 34 45
37 42 43 40
41 38 39 44
36 47 46 33
64 51 50 61
53 58 59 56
57 54 55 60
52 63 62 49
32 19 18 28
21 26 23 28
25 22 23 28
20 31 30 17

این ماتریس نیمی از مربع جادویی دیگری است که عناصر آن در محدوده اعداد صحیح 1:64 قرار دارند. مبالغ ستون در حال حاضر وجود دارد مقدار صحیحبرای مربع جادویی 8x8:

جمع (B)
ans = 260 260 260 260 260 260 260 260

با این حال، مجموع خطوط

جمع (B")
ans = 196 196 196 196 324 324 324 324 324

اصلا.

سعی کنید جایگشت های عناصری را پیدا کنید که ماتریس B را به مربع جادویی واقعی مرتبه 8 می آورند.

حذف سطرها و ستون ها. با استفاده از مفهوم آرایه خالی، می توانید به راحتی سطرها، ستون ها و کل بلوک های فرعی را حذف کنید.

بیایید بگوییم

X=A
X=

16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1

برای حذف ستون دوم آرایه X کافی است عملگر را اعمال کنید

X(:،2)=
X=

16 3 13
5 10 8
9 6 12
4 15 1

هنگام تلاش برای حذف یک عنصر واحد از یک آرایه، یک خطا رخ می دهد زیرا نتیجه یک آرایه نیست:

X(1، 2) =
??? تخصیص ماتریس خالی نمایه شده مجاز نیست.
اختصاص یک ماتریس خالی به یک عبارت شاخص ممنوع است
.

با این حال، استفاده از یک شاخص واحد به شما این امکان را می دهد که یک عنصر یا دنباله ای از عناصر را حذف کنید و بقیه عناصر به بردار ردیف تبدیل شوند.

X=A;
X(:، 2) =

X=

16 3 13
5 10 8
9 6 12
4 15 1

X(2:1:12) =
X=16
یا
X=A;
X(:، 2) =

X=

16 3 13
5 10 8
9 6 12
4 15 1

X(2:2:10) =
X = 16 9 3 6 13 12 1

نمایه سازی آرایه های چند بعدی . در متلب مرسوم است که هر آرایه بدون توجه به ابعاد آن به عنوان بردار ستونی ذخیره می شود. این بردار از اتحاد (الحاق) ستون های آرایه اصلی تشکیل می شود.

مثال.
سیستم متلب آرایه A را ذخیره می کند

الف=

به عنوان بردار ستون زیر

2
4
3
6
2
0
9
8
1

هنگام دسترسی به آرایه A با یک شاخص واحد، این بردار ستون مستقیماً قابل دسترسی است. فراخوانی A(3) به مقدار سوم در ستون اشاره دارد. الف(7) - در هفتم و غیره.

اگر تعداد شاخص‌های آرایه بیشتر از 1 باشد، متلب با استفاده از مقادیر ابعاد آرایه، شاخص را در ستون ذخیره‌سازی محاسبه می‌کند. اگر یک آرایه دو بعدی A دارای اندازه باشد، جایی که d1 تعداد ردیف ها و d2 تعداد ستون ها است، برای عنصر با عدد (i, j) موقعیت آن در بردار ذخیره سازی به صورت (j-1) تعیین می شود. )*d1+i.

مثال

برای عنصر A(3, 2)، متلب موقعیت بعدی را در بردار ذخیره سازی محاسبه می کند (2-1)*3+3 = 6. به عنصر شماره 6 مقدار 0 اختصاص داده می شود.
این روش ذخیره سازی و طرح نمایه سازی برای آرایه های چند بعدی نیز اعمال می شود. در این مورد، متلب از یک طرح صفحه بندی برای ایجاد ستون ذخیره استفاده می کند.
استفاده از یک شاخص واحد منجر به تجدید نظر مستقیمبه بردار ذخیره سازی
اگر دو شاخص (i, j) داده شود، متلب موقعیت را به روشی که در بالا توضیح داده شد، و فقط برای صفحه اول یک آرایه چند بعدی محاسبه می کند و به شرطی که این اندیس ها در محدوده ابعاد آرایه اصلی باشند.
اگر بیش از دو شاخص مشخص شود، طرح نمایه سازی پیچیده تر می شود. اگر چهار شاخص (i، j، k، l) برای یک آرایه چهار بعدی به اندازه d1xd2xd3xd4 داده شود، موقعیت عنصر در بردار ذخیره به صورت زیر محاسبه می شود.
s = (l-1)(d3)(d2)(d1)+(k-1)(d2)(d1)+(j-1)(d1)+i.
فرمول کلیبرای موقعیت عنصر در بردار ذخیره مربوط به عنصر (j1 j2 ... jn-1 jn) آرایه n بعدی به اندازه d1xd2xd3x ... xdn، برابر است با
s = (jn-1)(dn-1)(dn-2)...(d1)+(jn-1-1)(dn-2)...(d1)+...+(j2- 1)(d1)+j1.

مثال

یک آرایه چند بعدی C به اندازه 5x4x3x2 را در نظر بگیرید. روی انجیر 3.2 فرمت های نمایش و ذخیره سازی را نشان می دهد.

خروجی روی نمایشگر روش ذخیره سازی
صفحه (1،1) =
1
4 3 5
1 7 8
6 3 2
1 5 9
2 7 5
6 2
4
2
7 1 9
0 0 5
9 4 2
1 8 5

همه داده های متلببه صورت آرایه نشان می دهد. درک نحوه استفاده صحیح از آرایه ها بسیار مهم است. بدون آن غیر ممکن است کار موثردر MatLab، به ویژه ترسیم، حل مسائل جبر خطی، پردازش داده ها، آمار و بسیاری دیگر. این بخش محاسبات با بردارها را شرح می دهد.

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

درک این نکته مهم است که بردار، بردار ردیف یا ماتریس یک شی ریاضی است و آرایه های یک بعدی، دو بعدی یا چند بعدی راه هایی برای ذخیره این اشیاء در رایانه هستند. در هر جای زیر، اگر شی مورد نظر بیشتر از نحوه ذخیره‌سازی آن باشد، از کلمات برداری و ماتریس استفاده می‌شود. یک بردار را می توان در یک ستون (بردار ستون) و در یک ردیف (بردار ردیف) نوشت. بردارهای ستونی و بردارهای ردیف اغلب به عنوان بردار نامیده می شوند، این تمایز در مواردی است که نحوه ذخیره بردار در MatLab مهم است. بردارها و ماتریس ها به صورت مورب و آرایه های مربوط به آنها با فونت تک فضایی ساده نشان داده شده اند، به عنوان مثال: "بردار آموجود در آرایه a"، "ماتریس R را در آرایه r بنویسید".

جمع و تفریق بردارها را وارد کنید

بیایید کار با آرایه ها را با یک مثال ساده- محاسبه مجموع بردارها:
, .

از آرایه های a و b برای ذخیره بردارها استفاده کنید. یک آرایه را وارد کنید خط فرماناستفاده كردن براکتو جدا کردن عناصر بردار با نقطه ویرگول:

» a =
a =
1.3000
5.4000
6.9000

از آنجایی که عبارت وارد شده با نقطه ویرگول خاتمه نمی یابد، پس بسته MatLabبه طور خودکار مقدار متغیر a را استنتاج کرد. اکنون بردار دوم را وارد کنید و نمایشگر را خاموش کنید

» b = ;

علامت + برای یافتن مجموع بردارها استفاده می شود. مجموع را محاسبه کنید، نتیجه را در آرایه c بنویسید و عناصر آن را در پنجره فرمان خروجی بگیرید:

» c \u003d a + b
c =
8.4000
8.9000
15.1000

ابعاد و اندازه یک آرایه a را با استفاده از توابع داخلی ndims و size پیدا کنید:

» ndims(a)
ans =
2
» اندازه (a)
ans =
3 1

بنابراین بردار آدر یک آرایه دو بعدی a با ابعاد سه در یک (بردار ستون سه ردیف و یک ستون) ذخیره می شود. عملیات مشابهی را می توان برای آرایه ها انجام داد بو ج. از آنجایی که اعداد در بسته MatLab به صورت یک آرایه دو بعدی یک به یک نمایش داده می شوند، هنگام اضافه کردن بردارها از همان علامت مثبت برای جمع اعداد استفاده می شود.

بردار ردیف در کروشه وارد می شود، اما عناصر باید با فاصله یا کاما از هم جدا شوند. عملیات جمع، تفریق و محاسبه توابع ابتدایی از بردارهای ردیف به همان روشی که با بردارهای ستونی انجام می شود، انجام می شود و در نتیجه بردار ردیفی به همان اندازه بردارهای اصلی ایجاد می شود. مثلا:

» s1 =
s1 =
3 4 9 2
» s2 =
s1 =
5 3 3 2
» s3 = s1 + s2
s3 =
8 7 12 4

تبصره 1

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

طبیعتاً برای یافتن تفاوت بردارها باید از علامت منهای استفاده شود؛ با ضرب وضعیت تا حدودی پیچیده تر می شود.
دو بردار ردیف را وارد کنید:

» v1 = ;
» v2 = ;

عمل .* (فاصله بین نقطه و ستاره قرار ندهید!) منجر به ضرب عنصری بردارهایی با طول یکسان می شود. نتیجه یک بردار با عناصر برابر با حاصلضرب عناصر متناظر بردارهای اصلی است:

» u = v1.*v2
تو =
14 -15 -24 9

با استفاده از .^، توان عنصری انجام می شود:

» p = v1.^2
p=
4 9 16 1

توان می تواند بردار به همان طول بردار باشد که به توان بالا می رود. در این حالت، هر عنصر از بردار اول به توانی برابر با عنصر مربوطه بردار دوم افزایش می یابد:

» p = vl.^v2
P =
128.0000 -243.0000 0.0002 1.0000

تقسیم عناصر مربوط به بردارهای هم طول با استفاده از عملیات انجام می شود./

» d = v1./v2
d=
0.2857 -0.6000 -0.6667 0.1111

تقسیم عنصر به عنصر معکوس (تقسیم عناصر بردار دوم به عناصر مربوطه بردار اول) با استفاده از عملیات انجام می شود.\

» dinv=vl.\v2
dinv=
3.5000 -1.6667 -1.5000 9.0000

بنابراین، نقطه در MatLab نه تنها برای وارد کردن کسرهای اعشاری، بلکه برای نشان دادن اینکه تقسیم یا ضرب آرایه های هم اندازه باید عنصر به عنصر انجام شود، استفاده می شود.
عملیات عنصر به عنصر نیز شامل عملیات با بردار و عدد است. افزودن یک بردار و یک عدد منجر به پیام خطایی نمی شود. MatLab به هر عنصر بردار یک عدد اضافه می کند. همین امر در مورد تفریق نیز صادق است:

» v = ;
» s = v + 1.2
s=
5.2000 6.2000 9.2000 11.2000
» r = 1.2 - v
r=
-2.8000 -4.8000 -6.8000 -8.8000
» r1 = v - 1.2
r1 = 2.8000 4.8000 6.8000 8.8000

شما می توانید یک بردار را در یک عدد در سمت راست و چپ ضرب کنید:

» v = ;
» p = v*2
p=.
8 12 16 20
» pi = 2*v
پی =
8 12 16 20

می توانید با استفاده از علامت / یک بردار را بر یک عدد تقسیم کنید:

» р = v/2
p=
2 3 4 5

تلاش برای تقسیم یک عدد بر یک بردار منجر به یک پیام خطا می شود:

» р = 2/v
؟؟؟ خطا در استفاده از ==> /
ابعاد ماتریس باید همخوان باشند.

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

» w = ;
» d = 12./w
d=
3 6 2

تمام عملیات فوق هم برای بردارهای ردیف و هم بردار ستون اعمال می شود.
ویژگی MatLab برای نمایش تمام داده ها به صورت آرایه بسیار راحت است. به عنوان مثال، لازم است که مقدار تابع sin را به طور یکجا برای همه عناصر بردار محاسبه کنیم با(که در آرایه c ذخیره می شود) و نتیجه را در یک بردار بنویسید دبرای بدست آوردن وکتور دکافی است از یک عملگر انتساب استفاده کنید:

» d = گناه(ها)
d=
0.8546
0.5010
0.5712

بنابراین در MatLab تعبیه شده است توابع ابتداییانطباق با نوع استدلال. اگر آرگومان یک آرایه باشد، نتیجه تابع، آرایه ای به همان اندازه، اما با عناصری برابر با مقدار تابع از عناصر مربوطه آرایه اصلی خواهد بود. این را با مثال دیگری تأیید کنید. اگر نیاز دارید پیدا کنید ریشه دوماز عناصر برداری دبا علامت منفی کافی است بنویسید:

» sqrt(-d)
ans =
0 + 0.9244i
0 + 0.7078i
0 + 0.7558i

عملگر انتساب استفاده نشده است، بنابراین بسته MatLab پاسخ را در متغیر استاندارد ans ذخیره می کند.

برای تعیین طول بردارهای ستون یا بردار ردیف، از تابع طول داخلی استفاده کنید:

» طول (s1)
ans =
4

چند بردار ستونی را می توان با استفاده از براکت های مربع و جدا کردن بردارهای ستون اصلی با یک نقطه ویرگول در یکی ترکیب کرد:

» v1 = ;
» v2 = ;
»v=
v=
1
2
3
4
5

الحاق بردار ردیف نیز از براکت مربع استفاده می کند، اما بردارهای ردیف به هم پیوسته با فاصله یا کاما از هم جدا می شوند:

» v1 = ;
» v2 = ;
»v=
v=
1 2 3 4 5

کار با عناصر برداری

عناصر یک بردار ستونی یا بردار ردیفی با استفاده از یک نمایه محصور شده در دسترس هستند براکت های گردبعد از نام آرایه ای که بردار در آن ذخیره شده است. اگر در بین متغیرها محیط کاریک آرایه v وجود دارد که توسط یک بردار ردیف تعریف شده است

» v = ;

سپس برای خروجی، به عنوان مثال، عنصر چهارم آن، استفاده کنید نمایه سازی:

» v(4)
ans =
8.2000

ظاهر یک عنصر آرایه در سمت چپ عملگر انتساب منجر به تغییر در آرایه می شود

» v(2) = 555
v=
1.3000 555.0000 7.4000 8.2000 0.9000

برای مثال می توان از عناصر آرایه برای تشکیل آرایه های جدید استفاده کرد

»u=
u=
7.4000
555.0000
1.3000

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

» ind = ;
» w = v(ind)
w =
8.2000 555.0000 0.9000

MatLab فراهم می کند راه راحتدسترسی به بلوک های عناصر متوالی یک ستون-بردار یا ردیف-بردار. برای این کار می کند نمایه سازی با کولونبیایید آن را در آرایه فرض کنیم w، مربوط به یک بردار ردیفی از هفت عنصر است، لازم است عناصر از دوم تا ششم با صفر جایگزین شوند. نمایه سازی با کولون به شما امکان می دهد به سادگی و بصری مشکل را حل کنید:

» w = ;
» w(2:6) = 0;
» w
w =
0.1000 0 0 0 0 0 9.8000

انتساب w(2:6) = 0 معادل دستور توالی است
w(2) = 0; w(3)=0; w(4)=0; w(5)=0; w(6)=0.
نمایه سازی کولون هنگام استخراج بخشی از حجم زیادی از داده ها مفید است آرایه جدید:

» w - ;
»wl = w(3:5)
wl=
3.3000 5.1000 2.6000

یک آرایه w2 بسازید که شامل عناصر w بجز عنصر چهارم باشد. در این مورد، استفاده از کولون و رشته به هم پیوسته راحت است:

» w2 =
w2 =
0.1000 2.9000 3.3000 2.6000 7.1000 9.8000

عناصر آرایه را می توان در عبارات گنجاند. برای مثال، میانگین هندسی عناصر آرایه را پیدا کنید تو، می تواند به این صورت انجام شود:

» gm = (u(l)*u(2)*u(3))^(l/3)
gm=
17.4779

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

استفاده از توابع پردازش داده در بردارها

ضرب عناصر یک بردار ستونی یا بردار ردیفی با استفاده از تابع prod انجام می شود:

» z = ;
» p = prod(z)
p=720

تابع sum برای جمع کردن عناصر یک بردار طراحی شده است. با کمک آن، محاسبه میانگین حسابی عناصر بردار z آسان است:

» sum(z)/length(z)
ans =
3.5000

MatLab همچنین دارای یک میانگین تابع ویژه برای محاسبه میانگین حسابی است:

» mean(z)
ans =
3.5000

برای تعیین حداقل و حداکثر عناصر بردارحداقل و حداکثر توابع داخلی هستند:

» m1 = حداکثر (z)
m1 =
6
» m2 ​​= min(z)
m2 =
1

اغلب لازم است که نه تنها مقدار حداقل یا حداکثر عنصر در یک آرایه، بلکه شاخص آن نیز بدانیم ( شماره سریال). در این حالت، توابع داخلی min و max باید برای مثال با دو آرگومان خروجی استفاده شوند

» = min(z)
m =
1
ک =
3

در نتیجه به متغیر m مقدار داده می شود حداقل عنصرآرایه z، و تعداد عنصر حداقل در متغیر k ذخیره می شود.
برای اطلاعات در مورد راه های مختلفبرای استفاده از توابع، help و نام تابع را در خط فرمان تایپ کنید. MatLab به پنجره فرمان خروجی می دهد انواع راه هافراخوانی تابع با توضیحات اضافی
از جمله توابع اساسی برای کار با بردارها، تابع مرتب سازی بردار به ترتیب صعودی عناصر آن، مرتب سازی است.

» r = ;
» R = مرتب سازی (r)
R=

می توانید با استفاده از همان بردار را به ترتیب نزولی مرتب کنید تابع مرتب سازی:

» R1 = -sort(-r)
R1 =
9.4000 7.1000 1.3000 0.8000 -2.3000 -5.2000

ترتیب عناصر به ترتیب صعودی ماژول های آنها با استفاده از تابع abs انجام می شود:

» R2 = sort(abs(r))
R2 =
0.8000 1.3000 2.3000 5.2000 7.1000 9.4000

فراخوانی مرتب‌سازی با دو آرگومان خروجی منجر به آرایه‌ای از شاخص‌های منطبق از عناصر مرتب شده و آرایه های منبع:

» = مرتب سازی (r)
rs=
-5.2000 -2.3000 0.8000 1.3000 7.1000 9.4000
ind =
3 2 5 6 4 1

درس شماره 13.

آرایه های چند بعدی

    مفهوم آرایه های چند بعدی

    استفاده از عملگر ":" در آرایه های چند بعدی

    دسترسی به عنصر فردیآرایه چند بعدی

    حذف یک بعد در یک آرایه چند بعدی

    ایجاد صفحات پر از ثابت و اعداد تصادفی

    اتحاد آرایه ها

    محاسبه تعداد ابعاد یک آرایه و تعیین اندازه ابعاد

    جایگشت ابعاد آرایه

    تغییر ابعاد آرایه ها

    حذف ابعاد واحد

در این درس، به مسائل مربوط به انواع داده های پیچیده تر، که شامل آرایه های چند بعدی است، خواهیم پرداخت.

مفهوم آرایه های چند بعدی

در متلب، آرایه دو بعدی یک مورد خاص از یک آرایه چند بعدی است. آرایه های چند بعدی با بعد بزرگتر از دو مشخص می شوند. چنین آرایه هایی را می توان تفسیر بصری داد. بنابراین، یک ماتریس (آرایه دو بعدی) را می توان روی یک ورق کاغذ به صورت ردیف و ستون متشکل از عناصر ماتریس نوشت. سپس یک دفترچه با چنین برگه هایی را می توان یک آرایه سه بعدی در نظر گرفت، یک قفسه در یک کابینت با دفترچه یادداشت - یک آرایه چهار بعدی، یک کابینت با قفسه های زیاد - یک آرایه پنج بعدی و غیره. در این کتاب تقریباً هیچ جا به جز این بخش، به آرایه هایی می پردازیم که ابعاد آنها بالاتر از دو است، اما دانستن قابلیت های متلب در تعیین و استفاده از آرایه های چند بعدی همچنان مفید است.

در ادبیات ما، مفاهیم «اندازه» و «بعد» آرایه ها تقریباً مترادف هستند. با این حال، آنها در این کتاب و همچنین در اسناد و ادبیات متلب معانی متفاوتی دارند. زیر بعد، ابعاد، اندازهآرایه ها به عنوان تعداد ابعاد در نمایش فضایی آرایه ها و زیر درک می شود اندازه -تعداد سطرها و ستون ها (mxn) در هر بعد آرایه.

استفاده از عملگر ":" در آرایه های چند بعدی

هنگامی که آرایه ها به طور معمول مشخص می شوند (با استفاده از کاراکتر نقطه ویرگول ";")، تعداد ردیف ها (ردیف های) آرایه 1 بیشتر از تعداد کاراکترهای ":" است، اما آرایه دو بعدی باقی می ماند. عملگر ":" (دونقطه) انجام عملیات برای افزایش ابعاد آرایه ها را آسان می کند. اجازه دهید مثالی از تشکیل یک آرایه سه بعدی با اضافه کردن بیاوریم صفحه جدید. اجازه دهید یک آرایه دو بعدی M اولیه با اندازه 3x3 داشته باشیم:

» M=

M =

1 2 3

4 5 6

7 8 9

برای افزودن یک صفحه جدید با همان اندازه، می توانید M را به صورت زیر بزرگ کنید:

» M(:.:.2)=

M(:.:.l) =

1 2 3

4 5 6

7 8 9

M(:.:.2) =

10 11 12

13 14 15

16 17 18

بیایید ببینیم که آرایه M اکنون حاوی چه چیزی است، زمانی که به صراحت مشخص شده است:

» م

M(:،:.1)=

1 2 3

4 5 6

7 8 9

M(:.:.2) =

10 11 12

13 14 15

16 17 18

همانطور که مشاهده می کنید، اعداد در عبارات M(:.:، 1) و M(:،:،2) به معنای شماره صفحه است.

دسترسی به یک عنصر منفرد از یک آرایه چند بعدی

برای فراخوانی عنصر مرکزی ابتدا صفحه اول و سپس صفحه دوم، باید عبارات زیر را بنویسید:

» M(2.2،1)

ans=

» MS2.2.2)

ans=

بنابراین در آرایه های چند بعدی از قانون نمایه سازی مشابه در آرایه های یک بعدی و دو بعدی استفاده می شود. یک عنصر دلخواه از، برای مثال، یک آرایه سه بعدی به عنوان M(1.j.k) مشخص می شود، که در آن 1 شماره ردیف، j شماره ستون، و k شماره صفحه است. این عنصر می تواند نمایش داده شود، یا می توانید آن را اختصاص دهید مقدار را تنظیم کنید x: M(1،j،k)=x.

حذف یک بعد در یک آرایه چند بعدی

ما قبلاً به امکان حذف ستون های جداگانه با اختصاص مقادیر یک بردار ستون خالی اشاره کرده ایم. این تکنیک را می توان به راحتی به صفحات و به طور کلی ابعاد یک آرایه چند بعدی گسترش داد. به عنوان مثال، صفحه اول آرایه حاصل از M را می توان به صورت زیر حذف کرد:

» M(:.:.1)=

M =

10 11 12

13 14 15

16 17 18

به راحتی می توان فهمید که فقط صفحه دوم در این آرایه باقی مانده است و بعد آرایه 1 کاهش یافته است - دو بعدی شده است.

ایجاد صفحات پر از ثابت و اعداد تصادفی

اگر بعد از علامت تخصیص یک ثابت عددی وجود داشته باشد، قسمت مربوطه از آرایه حاوی عناصر حاوی این ثابت خواهد بود. به عنوان مثال، بیایید یک آرایه از آرایه M ایجاد کنیم (به مثال بالا مراجعه کنید) که صفحه دوم آن شامل آرایه‌ها است:

»M(:.:..2)=1

M(:.:،1) =

10 11 12

13 14 15

16 17 18

M(:.:.2) =

1 1 1

1 1 1

1 1 1

حالا بیایید صفحه اول آرایه را با صفحه ای با عناصر صفر جایگزین کنیم:

»M(:.:.1)=0

M(:.:.1)=

0 0 0

0 0 0

0 0 0

M(:.:،2) =

1 1 1

1 1 1

1 1 1

با استفاده از توابع یک ها، صفر، رند و رند

توابع one (ایجاد آرایه با عناصر تک)، صفر (ایجاد آرایه با عناصر صفر)، و rand یا randn (به ترتیب ایجاد آرایه با اعداد تصادفی یکنواخت و معمولی) نیز می توانند برای ایجاد آرایه های چند بعدی استفاده شوند. نمونه هایی در زیر آورده شده است:

»E=ones(3.3.2)

E(:.:.1)=

1 1 1

1 1 1

1 1 1

E(:.:،2) =

1 1 1

1 1 1

1 1 1

» Z=صفر(2,2,3) Z(:,:.l) =

Z(:.:.2) =

Z(:.:،3) =

» R=randn(3,2.2) R(:.:.l) =

1.6656-1.1465

0.1253 1.1909

0.2877 1.1892

R(:.:،2) =

0.0376-0.1867

0.3273 0.7258

0.1746 -0.5883

این مثال ها کاملا واضح هستند و نیاز به اظهار نظر خاصی ندارند. با این حال، به سهولت تعیین اندازه آرایه ها برای هر بعد توجه کنید. علاوه بر این، باید توجه داشت که اگر حداقل یک بعد آرایه صفر باشد، آرایه خالی خواهد بود:

» A=randn(3,3,3,0)

A =

آرایه خالی: 3 در 3 در 3 در 0

همانطور که از این مثال، یک آرایه خالی با یک نظر مناسب برگردانده می شود.

اتحاد آرایه ها

برای ایجاد آرایه‌های چند بعدی، تابع الحاق ویژه cat که قبلاً برای ماتریس‌ها توضیح داده شد استفاده می‌شود:

    cat(DIM،A،B) - نتیجه ترکیب دو آرایه A و B را در امتداد بعد DIM برمی گرداند.

    cat(2.A.B) - آرایه ای [А.В] را برمی گرداند که در آن سطرها ترکیب شده اند (الحاق افقی).

    cat(1, A.B) - آرایه ای [A:B] را برمی گرداند که در آن ستون ها ترکیب شده اند (الحاق عمودی).

    B=cat(DIM.Al,A2,...) - مجموعه ای از آرایه های ورودی Al، A2،... را در امتداد بعد DIM به هم متصل می کند.

توابع cat(DIM,C(:)) و cat(DIM.C.FIELD) به ترتیب الحاق (اتحاد) سلول‌های یک آرایه سلولی (به درس 15) یا ساختارهای آرایه‌ای از ساختارها (به درس مراجعه کنید) را فراهم می‌کنند. 14) حاوی ماتریس های عددی در یک ماتریس واحد. در زیر نمونه هایی از استفاده از تابع cat آورده شده است:

» М1=

» М2=

M2 =

» catd.Ml.M2)

ans=

5 ب

» cat(2.Ml.M2)

ans=

1 2 5 6

3 4 7 8

» M-cat(3.Ml.M2) M(:,:.l) =

M(:,:,2) =

کار با ابعاد

محاسبه تعداد ابعاد یک آرایه

تابع ndims(A) بعد آرایه A را برمی گرداند (اگر بزرگتر یا مساوی دو باشد). اما اگر آرگومان ورودی یک آرایه جاوا یا آرایه ای از آرایه های جاوا باشد، بدون توجه به ابعاد آرایه، این تابع 2 را برمی گرداند. مثال بعدیاستفاده از تابع ndims را نشان می دهد:

» M=rand(2:3:4:5):

» ndims(M)

ans=

4
محاسبه اندازه یک بعد آرایه

تابع اندازه برای محاسبه اندازه هر بعد آرایه استفاده می شود:

    M = size(A.DIM) اندازه بعد مشخص شده توسط اسکالر DIM را به عنوان بردار ردیفی با اندازه 2 برمی گرداند. برای آرایه دو بعدی یا یک بعدی A، size(A.l) تعداد ردیف ها را برمی گرداند، و اندازه (A, 2) تعداد ستون ها.

برای آرایه های N بعدی، A برای n>2 اندازه (A) یک بردار ردیف N بعدی را نشان می دهد که صفحه بندی آرایه را نشان می دهد، آخرین مؤلفه این بردار N است. این بردار حاوی داده هایی در مورد ابعاد واحد نیست (آنهایی که در آن ها بردار سطر یا بردار ستون، یعنی اندازه (A,DIM)==l). استثنا آرایه های N بعدی است آرایه های جاوا javaarray که اندازه آرایه بالاترین سطح را برمی گرداند.

به طور کلی، زمانی که اندازه آرگومان ورودی یک جاواآرای باشد، تعداد ستون های برگشتی همیشه 1 است و تعداد سطرها (ردیف ها) برابر با اندازه (طول) جاواری است.

    Si ze(A) اندازه اولین ابعاد N آرایه A را برمی گرداند.

    D = اندازه (A)، برای mxn ماتریس A یک بردار ردیف دو عنصری را برمی‌گرداند که در آن جزء اول تعداد ردیف‌های m و جزء دوم تعداد ستون‌های n است.

    Size(A) تعداد سطرها و ستون ها را در نوع خروجی های مختلف (خروجی ها در اصطلاح MATLAB) برمی گرداند.

جایگشت ابعاد آرایه

اگر یک آرایه چند بعدی را به صورت صفحات نمایش دهیم، جایگشت آنها جایگشتی از ابعاد آرایه است. برای یک آرایه دو بعدی، جایگشت اغلب به معنی است جابجایی- جایگزینی سطرها با ستون و بالعکس. ویژگی های زیرتعمیم جابه‌جایی ماتریس‌ها در مورد آرایه‌های چند بعدی و ارائه جایگشتی برای ابعاد آرایه‌های چند بعدی:

    جایگشت (A، ORDER) - ابعاد آرایه A را به ترتیب تعیین شده توسط بردار جایگشت ORDER بازآرایی می کند. بردار ORDER یکی از جایگشت های ممکن همه اعداد صحیح از 1 تا است جایی که N-بعد آرایه A;

    ipermuteCA، ORDER) - معکوس جایگشت: permute(permute(A. ORDER)، ORDER)=A

در زیر نمونه هایی از این توابع و تابع اندازه آورده شده است:

» A=:

» B=;

» С=;

» D=cat(3.A,B.C)

D(:,:,l) =

9 10

11 12

» اندازه (D)

ans=

2 2 3

» اندازه (جایگزین (D.))

ans=

3 2 2

»اندازه(ipermute(D.))

ans=

2 2 3

» ipermute(permute(D,))

ans(:. :،2) =

ans(:.:،3) =

9 10

11 12

تغییر ابعاد آرایه ها

تغییر ابعاد توسط تابع shiftdim پیاده سازی می شود:

    B=shiftdim(X,N) - تغییر ابعاد در آرایه X توسط N. اگر M>0 باشد، تغییر ابعاد واقع در سمت راست به چپ انجام می شود و اولین ابعاد N در سمت چپ تا می شود. تا انتهای آرایه، یعنی ابعاد در جهت خلاف جهت عقربه های ساعت حرکت می کنند. اگر م<0, сдвиг выполняется вправо, причем N первых размерностей, сдвинутых вправо, замещаются единичными размерностями;

    Shiftdim(X) آرایه B را با همان تعداد عناصر آرایه X، اما با حذف ابعاد واحد اولیه برمی‌گرداند. خروجی NSHIFTS تعداد ابعاد حذف شده را نشان می دهد. اگر X یک اسکالر باشد، تابع X، V، NSHIFTS را تغییر نمی دهد.

مثال زیر استفاده از تابع shiftdim را نشان می دهد:

» A=randn(1.2.3,4):

»=shiftdim(A)

ب(:.:.l) =

2.1707-1.01060.5077

0.05920.6145 1.6924

B(:.:،2) =

0.5913 0.3803 -0.0195

0.6436-1.0091-0.0482

B(:.:.3) =

0.0000 1.0950 0.4282

0.3179-1.87400.8956

B(:.:،4) =

0.7310 0.0403 0.5689

0.5779 0.6771 -0.2556

حذف ابعاد واحد

تابع squeeze(A) آرایه ای را با حذف تمام ابعاد واحد برمی گرداند. بعد واحد بُعدی است که در آن اندازه (A. dim) == 1. اما اگر

A یک آرایه یک بعدی یا دو بعدی (ماتریسی یا برداری) است، سپس تابع همان آرایه A را برمی گرداند. مثال زیر نحوه عملکرد squeeze را توضیح می دهد:

» A=randn(1.2.1.3.1):

» B=squeeze(A)

0.6145 1.6924 -0.6436

0.5077 0.5913 0.3803

توجه داشته باشید که آرایه پنج بعدی A به یک آرایه 2 بعدی با اندازه 2x3 تبدیل می شود.

چه چیز جدیدی یاد گرفتیم؟

در این درس آموختیم:

    آرایه های چند بعدی ایجاد کنید.

    از عملگر ":" در آرایه های چند بعدی استفاده کنید.

    دسترسی به عناصر مجزا از آرایه های چند بعدی.

    ابعاد را از یک آرایه چند بعدی حذف کنید.

    آرایه هایی پر از ثابت و اعداد تصادفی ایجاد کنید.

    ادغام آرایه را انجام دهید.

    تعداد ابعاد آرایه را محاسبه کنید و اندازه هر بعد را تعیین کنید.

    تنظیم مجدد، جابجایی و حذف ابعاد تک در آرایه های چند بعدی.

آرایه ها اشیاء اصلی در سیستم هستندمتلب : فقط در نسخه های 4.xآرایه های یک بعدی- بردارها - و آرایه های دو بعدی - ماتریس. در نسخه 5.0 امکان استفاده از آرایه های چند بعدی - تانسور وجود دارد. در زیر توابع تشکیل آرایه ها و ماتریس ها، عملیات روی ماتریس ها، ماتریس های ویژه در سیستم توضیح داده شده است.نسخه های متلب 4.x.

تشکیل آرایه هایی از نوع خاص

  • صفر - تشکیل آرایه ای از صفرها
  • ONES - تشکیل آرایه ای از واحدها
  • چشم - تشکیل یک ماتریس واحد
  • رند - تشکیل آرایه ای از عناصر که طبق قانون یکنواخت توزیع شده اند
  • RANDN - تشکیل آرایه ای از عناصر که طبق قانون عادی توزیع شده اند
  • صلیب - محصول برداری
  • کرون - تشکیل محصول تانسور
  • LINSPACE - تشکیل یک آرایه خطی از گره های با فاصله مساوی
  • LOGSPACE - تشکیل گره های شبکه لگاریتمی
  • MESHGRID - تشکیل گره های شبکه های دو بعدی و سه بعدی
  • : - تشکیل بردارها و زیرماتریس ها

عملیات ماتریسی

  • DIAG - تشکیل یا استخراج قطرهای ماتریس
  • TRIL - تشکیل یک ماتریس مثلثی پایین تر (آرایه)
  • TRIU - تشکیل یک ماتریس مثلثی بالایی (آرایه)
  • FLIPR - چرخش ماتریس حول محور عمودی
  • FLIPUD - چرخش ماتریس نسبت به محور افقی
  • ROT90 - ماتریس را 90 درجه بچرخانید
  • تغییر شکل می دهد - تبدیل اندازه ماتریس

ماتریس های ویژه

  • COMPAN ماتریس همراه چند جمله ای مشخصه است
  • هادامارد - ماتریس هادامارد
  • HANKEL - ماتریس هانکل
  • HILB، INVHILB - ماتریس هیلبرت
  • شعبده بازي - مربع جادویی
  • پاسکال - ماتریس پاسکال
  • ROSSER - ماتریس راسر
  • تاپلیتز - ماتریس Toeplitz
  • وندر - ماتریس واندرموند
  • ویلکینسون - ماتریس ویلکینسون

CONV، DECONV

پیچیدگی آرایه های یک بعدی

نحو:

Z = تبدیل (x، y)
= deconv(z، x)

شرح:

اگر داده شود آرایه های یک بعدیx و y به ترتیب با طول m = طول (x) و n = طول (y)، سپس کانولوشن z یک آرایه یک بعدی به طول m + n -1 است که k-امین عنصر آن با فرمول

تابع z = conv(x, y) انحراف z دو آرایه یک بعدی x و y را محاسبه می کند.

با در نظر گرفتن این آرایه ها به عنوان نمونه ای از دو سیگنال، می توانیم قضیه کانولوشن را به شکل زیر فرموله کنیم:
اگر X = fft() و Y = fft() تبدیل فوریه با اندازه سیگنال های x و y باشند، آنگاه conv(x, y) = ifft(X.*Y) درست است.

به عبارت دیگر، پیچیدگی دو سیگنال معادل ضرب تبدیل فوریه این سیگنال ها است.

تابع = deconv(z, x) معکوس کانولوشن را انجام می دهد. این عملیات معادل تعیین پاسخ ضربه ای فیلتر است. اگر رابطه z = conv(x, y) معتبر باشد، q = y، r = 0.

ویژگی های مرتبط:جعبه ابزار پردازش سیگنال

1. راهنمای کاربر جعبه ابزار پردازش سیگنال. Natick: The MathWorks, Inc., 1993.

تنظیم قالب ماتریس ها و بردارها (ماتریس...)

عملیات Matrix... (ماتریس ها) تعریف بردارها یا ماتریس ها را ارائه می دهد.همانطور که می دانید ماتریس شی ای است که با نام خود در قالب آرایه ای از داده ها داده می شود. MathCAD استفاده می کند آرایه های یک بعدی- بردارها و ماتریس های دو بعدی - مناسب

ماتریس با تعداد ردیف ها (ردیف ها) و تعداد ستون ها (ستون ها) مشخص می شود. بنابراین، تعداد عناصر یک ماتریس یا ابعاد آن برابر است با سطر x ستون.

اگر از عملیات Matrix... استفاده می کنید، یک پنجره کوچک در پنجره فعلی ظاهر می شود که به شما امکان می دهد ابعاد یک بردار یا ماتریس را تعیین کنید (شکل 515 را در سمت راست ببینید). برای این کار باید مشخص کنید. تعداد ردیف‌های ردیف و تعداد ستون‌های Columns. با درج (Insert) در پنجره، می‌توانید یک ماتریس یا الگوی برداری (بردار دارای یکی از پارامترهای ابعادی برابر با 1) است.

این الگو شامل پرانتزها و مستطیل های کوچک تیره است که مکان هایی را برای وارد کردن مقادیر (عددی یا کاراکتر) برای عناصر یک بردار یا ماتریس نشان می دهد. یکی از مستطیل ها را می توان فعال کرد (با علامت گذاری آن با نشانگر ماوس). در عین حال در گوشه ای قرار دارد. این نشان می دهد که مقادیر عنصر مربوطه در آن وارد می شود. با استفاده از کلیدهای مکان نما، می توانید به صورت افقی در تمام مستطیل ها پیمایش کنید و تمام عناصر یک بردار یا ماتریس را وارد کنید.


برنج. 5. 15 خروجی از قالب های برداری و ماتریس و پر کردن آنها

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

اگر از عملیات Insert (Inclusion) با یک الگوی ماتریس از قبل مشتق شده استفاده می کنید، ماتریس گسترش می یابد و اندازه آن افزایش می یابد. دکمه حذف (پاک کردن) به شما امکان می دهد تا گسترش ماتریس را با حذف یک ردیف یا ستون از آن حذف کنید.

هر عنصر ماتریس با یک متغیر نمایه شده مشخص می شود و موقعیت آن در ماتریس با دو شاخص مشخص می شود: یکی شماره ردیف و دیگری نشان دهنده شماره ستون است. برای مجموعه متغیرهای نمایه شده، ابتدا باید نام متغیر را وارد کنید و سپس با فشار دادن کلیدی که کاراکتر را وارد می کند، به مجموعه شاخص بروید. ابتدا فهرست سطر و سپس نمایه ستون که با کاما از هم جدا می شود، مشخص می شود. نمونه هایی از خروجی متغیرهای نمایه شده (عناصر ماتریس M) نیز در شکل. 5.14.

ماتریسی که به یک سطر یا یک ستون تبدیل می‌شود یک بردار است. عناصر آن متغیرهای نمایه شده با یک شاخص هستند. کران پایین شاخص ها با مقدار متغیر سیستم ORIGIN داده می شود. معمولا مقدار آن 0 یا 1 تنظیم می شود.

برترین مقالات مرتبط