English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

المجموعات في MATLAB

جميع المتغيرات من جميع أنواع البيانات في MATLAB هي مصفوفات متعددة الأبعاد. الفريق هو مصفوفة ذات بعد واحد، والمصفوفة هي مصفوفة ذات بعد ثنائي.

نحن قد مناقشناهما في هذا الفصل: الم矢量 والمصفوفات. في هذا الفصل، سنناقش مصفوفات متعددة الأبعاد. ولكن قبل ذلك، دعونا نتحدث عن أنواع خاصة من المصفوفات.

المصفوفات الخاصة في MATLAB

في هذا المقطع، سنناقش بعض الوظائف التي تتيح إنشاء مصفوفات خاصة. لكل من هذه الوظائف، معامل واحد ينتج مصفوفة مربعة، ومعاملان ينتجان مصفوفة مستطيلة.

zeros()الوظيفة تقوم بإنشاء مصفوفة تحتوي على عناصر 0.

على سبيل المثال -

zeros(5)

سيقوم MATLAB بتفيذ الجملة السابقة ويعيد النتيجة التالية -

ans =
      0     0     0     0     0
      0     0     0     0     0
      0     0     0     0     0
      0     0     0     0     0
      0     0     0     0     0

ones()الوظيفة تقوم بإنشاء مصفوفة تحتوي على عناصر 1.

على سبيل المثال -

ones(4,3)

سيقوم MATLAB بتفيذ الجملة السابقة ويعيد النتيجة التالية -

ans =
      1     1     1
      1     1     1
      1     1     1
      1     1     1

eye()الوظيفة تقوم بإنشاء مصفوفة وحدوية.

على سبيل المثال -

eye(4)

سيقوم MATLAB بتفيذ الجملة السابقة ويعيد النتيجة التالية -

ans =
      1     0     0     0
      0     1     0     0
      0     0     1     0
      0     0     0     1

rand()الوظيفة تقوم بإنشاء مصفوفة من الأرقام العشوائية الموزعة بشكل متساوٍ في النطاق (0,1).

على سبيل المثال -

rand(3, 5)

سيقوم MATLAB بتفيذ الجملة السابقة ويعيد النتيجة التالية -

ans =
   0.8147    0.9134    0.2785    0.9649    0.9572
   0.9058    0.6324    0.5469    0.1576    0.4854
   0.1270    0.0975    0.9575    0.9706    0.8003

المصفوفة السحرية

magic squareهي مربع مستطيل، عندما يتم جمع عناصره وفقًا للصف، العمود أو الرأس، فإنها تنتج نفس مجموع.

magic()الوظيفة تقوم بإنشاء مصفوفة سحرية. تستقبل معاملًا فرديًا، ويُحدد هذا المعامل حجم المربع. يجب أن يكون المعامل صحيحًا ويساوي أو أكبر من 3.

magic(4)

سيقوم MATLAB بتفيذ الجملة السابقة ويعيد النتيجة التالية -

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

المستوى المتعدد

المستوى المتعدد في MATLAB يُدعى بـ مصفوفة متعددة الأبعاد. مصفوفة متعددة الأبعاد في MATLAB هي امتداد لمصفوفات الثنائية العنصرية العادية.

عادةً، لإنشاء مصفوفة متعددة الأبعاد، نبدأ بإنشاء مصفوفة ثنائية الأبعاد ثم نوسعها.

على سبيل المثال، لنقم بإنشاء مصفوفة ثنائية الأبعاد a.

a = [7 9 5; 6 1 9; 4 3 2]

سيقوم MATLAB بتفيذ الجملة السابقة ويعيد النتيجة التالية -

a =
   7     9     5
   6     1     9
   4     3     2

المصفوفةaهو مصفوفة 3×3؛ يمكننا إضافة البعد الثالثواحد، من خلال تقديم القيم المماثلة-

a(:, :, 2)= [ 1 2 3; 4 5 6; 7 8 9]

سيقوم MATLAB بتفيذ الجملة السابقة ويعيد النتيجة التالية -

a =
ans(:,:,1) =
   0   0   0
   0   0   0
   0   0   0
ans(:,:,2) =
   1   2   3
   4   5   6
   7   8   9

يمكننا أيضًا إنشاء متجه متعدد الأبعاد باستخدام وظائف ones()، zeros() أو rand().

على سبيل المثال،

b = rand(4,3,2)

سيقوم MATLAB بتفيذ الجملة السابقة ويعيد النتيجة التالية -

b(:,:,1) =
   0.0344    0.7952    0.6463
   0.4387    0.1869    0.7094
   0.3816    0.4898    0.7547
   0.7655    0.4456    0.2760
b(:,:,2) =
   0.6797    0.4984    0.2238
   0.6551    0.9597    0.7513
   0.1626    0.3404    0.2551
   0.1190    0.5853    0.5060

يمكننا أيضًا استخدامcat()وظيفة لبناء المتجهات المتعددة الأبعاد. تقوم بوصل قائمة من المتجهات على طول المقياس المحدد-

نموذج sintaxis للوظيفة cat() هو-

B = cat(dim, A1, A2...)

حيث،

  • Bهي المتجهة الجديدة التي تم إنشاؤها

  • A1،A2،... هي المتجهات التي يتم ربطها

  • dimهي المقياس الذي يتم بناء المتجهات بناءً عليه

مثال

أنشئ ملف سكريبت وأدخل الكود التالي فيه -

a = [9 8 7; 6 5 4; 3 2 1];
b = [1 2 3; 4 5 6; 7 8 9];
c = cat(3, a, b, [ 2 3 1; 4 7 8; 3 9 0])

عند تشغيل الملف، يظهر -

c(:,:,1) =
      9     8     7
      6     5     4
      3     2     1
c(:,:,2) =
      1             2             3
      4             5             6
      7             8             9
c(:,:,3) =
      2             3             1
      4     7     8
      3     9     0

وظائف المتجهات

يقدم MATLAB مجموعة من الوظائف لتسجيل، تدوير، تبديل، ترتيب أو تحريك محتويات المتجهات.

功能作用
length

向量长度或最大数组维数

ndims数组维数
numel数组元素数
size数组维数
iscolumn

确定输入是否为列向量

isempty确定数组是否为空
ismatrix

确定输入是否为矩阵

isrow确定输入是否为行向量
isscalar确定输入是否为标量
isvector确定输入是否为向量
blkdiag

根据输入参数构造块对角矩阵

circshift循环移位数组
ctranspose复共轭转置
diag对角矩阵和矩阵的对角线
flipdim

沿指定的维度翻转数组

fliplr从左到右翻转矩阵
flipud上下翻转矩阵
ipermute

倒置 N-D 数组的维数

permute

重新排列N-D数组的维数

repmat复制和切片数组
reshape重塑数组
rot90将矩阵旋转90度
shiftdim移动维度
issorted确定集合元素是否按排序顺序
sort

按升序或降序对数组元素排序

sortrows按升序对行进行排序
squeeze删除单例维度
transpose转置
vectorize向量化表达

مثال

以下示例说明了上面提到的一些功能。

元素的长度、维数和数量-

أنشئ ملف سكريبت وأدخل الكود التالي فيه -

x = [7.1, 3.4, 7.2, 28/4, 3.6, 17, 9.4, 8.9];
length(x)      % length of x vector
y = rand(3, 4, 5, 2);
ndims(y)       % no of dimensions in array y
s = ['Zara', 'Nuha', 'Shamim', 'Riz', 'Shadab'];
numel(s)       % no of elements in s

عند تشغيل الملف، سيظهر النتيجة التالية -

ans =  8
ans =  4
ans =  23

数组元素的循环移位

أنشئ ملف سكريبت وأدخل الكود التالي فيه -

a = [1 2 3; 4 5 6; 7 8 9]  % the original array a
b = circshift(a,1)         %  circular shift first dimension values down by 1.
c = circshift(a, [1 -1])                                                   % رفع القيم الأبعاد الأولى لأسفل % ب 1 
                           % ويضيف إلى القيم الأبعاد الثانية إلى اليسار % ب 1.

عند تشغيل الملف، سيظهر النتيجة التالية -

a =
   1             2             3
   4             5             6
   7             8             9
b =
   7             8             9
   1             2             3
   4             5             6
c =
   8             9             7
   2             3             1
   5             6             4

ترتيب مصفوفة

أنشئ ملف سكريبت وأدخل الكود التالي فيه -

v = [ 23 45 12 9 5 0 19 17]                                               % متجه أفقي
ترتيب(v)                                                                   % ترتيب v
m = [2 6 4; 5 3 9; 2 0 1]                                                   % مصفوفة ثنائية
ترتيب(m, 1)                                                                   % ترتيب m على طول الصف
ترتيب(m, 2)                                                                   % ترتيب m على طول العمود

عند تشغيل الملف، سيظهر النتيجة التالية -

v =
   23           45           12           9            5            0            19           17
ans =
   0             5             9           12           17           19           23           45
m =
   2             6             4
   5             3             9
   2             0             1
ans =
   2             0             1
   2             3             4
   5             6             9
ans =
   2             4             6
   3             5             9
   0             1             2

مصفوفة الخلايا

مصفوفة الخلايا هي مصفوفة من الخلايا المُعدة للاستدلال، حيث يمكن لتقريبًا كل خلية أن تحتوي على مصفوفة بأبعاد ومواعيد مختلفة.

cellيستخدم هذا الدالة لإنشاء مصفوفة من الخلايا. بناءً على مصفوفة الخلايا، نستخدم بنية الجملة -

C = cell(dim)
C = cell(dim1,...,dimN)
D = cell(obj)

شرح،

  • Cهو مصفوفة الخلايا؛

  • dimهو عدد صحيح عكسي أو متجه من الأعداد الصحيحة، يستخدم لتعريف أبعاد مصفوفة الخلايا C؛

  • dim1،...،dimNهو عدد صحيح عكسي لل维دي C؛

  • objهو واحد من الآتي -

    • مصفوفة Java أو عنصر

    • .NET نوع System.String أو System.Object هو مصفوفة

مثال

أنشئ ملف سكريبت وأدخل الكود التالي فيه -

c = cell(2, 5);
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}

عند تشغيل الملف، سيظهر النتيجة التالية -

c = 
{
   [1,1] = Red
   [2,1] = 1
   [1,2] = Blue
   [2,2] = 2
   [1,3] = Green
   [2,3] = 3
   [1,4] = Yellow
   [2,4] = 4
   [1,5] = White
   [2,5] = 5
}

استدعاء بيانات مجموعة الخلايا

هناك طريقتان لاستدعاء عناصر مجموعة الخلايا

  • ضع المؤشرات في البارزات [] للاشارة إلى مجموعة من الخلايا

  • ضع المؤشرات في البارزات {} للاشارة إلى بيانات الخلية الفردية

عندما تضع مؤشراتك في البارزات الأولى، فإنها تشير إلى مجموعة من الخلايا.

مؤشرات الأعداد في البارزات تشير إلى مجموعة من الخلايا.

على سبيل المثال -

c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c(1:2,1:2)

سيقوم MATLAB بتفيذ الجملة السابقة ويعيد النتيجة التالية -

ans = 
{
   [1,1] = Red
   [2,1] = 1
   [1,2] = Blue
   [2,2] = 2
}

يمكنك أيضًا استخدام الأقواس الكبيرة لاستدعاء محتويات الخلية.

على سبيل المثال -

c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c{1, 2:4}

سيقوم MATLAB بتفيذ الجملة السابقة ويعيد النتيجة التالية -

ans = Blue
ans = Green
ans = Yellow