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

النصوص في MATLAB

إنشاء النصوص في MATLAB بسيط للغاية. في الواقع، استخدمناها كثيرًا. على سبيل المثال، يمكنك إدخال ما يلي في محطة الأوامر-

my_string = 'oldtoolbag.com'

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

my_string = oldtoolbag.com

يعد MATLAB جميع المتغيرات مصفوفات، ويتم اعتبار النصوص مصفوفات نصية. دعونا نستخدمwhosللتحقق من المتغيرات التي تم إنشاؤها في الأعلى-

whos

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

الاسم  حجم  الحجم  الفئة  الصفات
my_string 1x16 32 char

من المثير للاهتمام، يمكنك استخدام وظائف التحويل الرقمية مثلuint8أوuint16لتحويل أحرف النص إلى رموزها الرقمية.charيحول الدالة المتجهات الصحيحة إلى نص-

مثال على الإنترنت

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

my_string = 'w3codebox's com';
str_ascii = uint8(my_string) % 8-bit ascii value
str_ascii = char(str_ascii)  
str_16bit = uint16(my_string) % 16-bit ascii value
str_back_to_char = char(str_16bit)

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

str_ascii =
  110 104 111 111 111 39 115 32 99 111 109
str_back_to_char = w3codebox's com
str_16bit =
  110 104 111 111 111 39 115 32 99 111 109
str_back_to_char = w3codebox's com

مصفوفة نصية مستقيمة

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

أبسط طريقة لإنشاء مصفوفة نصية مستقيمة هي ربط اثنين أو أكثر من مصفوفات نصية خطية عموديًا أو أفقيًا حسب الحاجة.

يمكنك جمع السلاسل العمودية بطرقين:

  • استخدام عمودي MATLAB []، وتفصل بين كل سطر بفاصلة سيارة (؛). يرجى ملاحظة أن في هذا الأسلوب يجب أن يحتوي كل سطر على عدد متساوي من الحروف. للسلاسل بطول مختلف، يجب استخدام مسافات الفراغ لملء الحاجة.

  • استخدام دالة char. إذا كانت طول السلاسل مختلفة، تستخدم char المسافات الزائدة في النهاية لتعبئة السلاسل القصيرة، لجعل كل سطر يحتوي على عدد متساوي من الحروف.

实例

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

doc_profile = ['Zara Ali                        '; ...
               'Sr. Surgeon                        '; ...
               'R N Tagore Cardiology Research Center']
doc_profile = char('Zara Ali', 'Sr. Surgeon', ...
                  'RN Tagore Cardiology Research Center')

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

doc_profile =
Zara Ali                             
Sr. Surgeon                          
R N Tagore Cardiology Research Center
doc_profile =
Zara Ali                            
Sr. Surgeon                         
RN Tagore Cardiology Research Center

يمكنك جمع السلاسل الأفقية بطرقين:

  • استخدام عموديMATLAB[]، وتفصل بين السلاسل النصية المدخلة بالكوما أو المسافة. هذا الأسلوب يحافظ على جميع المسافات الزائدة في مصفوفة الإدخال.

  • استخدام دالة الربط الثابت strcat، هذه الطريقة تزيل المسافات الزائدة في النهاية من الإدخال.

实例

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

name =     'Zara Ali                             ';
position = 'Sr. Surgeon                          '; 
worksAt = 'R N Tagore Cardiology Research Center';
profile = [name ', ' position ', ' worksAt]
profile = strcat(name, ', ', position, ', ', worksAt)

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

profile = Zara Ali            , Sr. Surgeon            , R N Tagore Cardiology Research Center
profile = Zara Ali, Sr. Surgeon, R N Tagore Cardiology Research Center

دمج السلاسل في مصفوفة الخلايا

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

لكن، الطريقة الأكثر فعالية لتكوين سلسلة متكاملة هي تحويل مصفوفة النتائج إلى مصفوفة خلية.

MATLAB单元数组可以在数组中保存不同大小和类型的数据。单元数组提供了一种更灵活的方式来存储长度可变的字符串。

cellstr函数将字符数组转换为字符串的单元格数组。

实例

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

name =     'Zara Ali                             ';
position = 'Sr. Surgeon                          '; 
worksAt = 'R N Tagore Cardiology Research Center';
profile = char(name, position, worksAt);
profile = cellstr(profile);
disp(profile)

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

{                                                                               
   [1,1] = Zara Ali                                                              
   [2,1] = Sr. Surgeon                                                           
   [3,1] = R N Tagore Cardiology Research Center                                 
}

وظائف النصوص في MATLAB

يقدم MATLAB العديد من وظائف النصوص لإنشاء، دمج، تحليل، مقارنة وتعامل النصوص.

يقدم الجدول أدناه تقريرًا مختصرًا عن وظائف النصوص في MATLAB-

الوظيفةالفعالية
وظائف لتخزين النص في مجموعة الأحرف، دمج مجموعات الأحرف، إلخ
blanks

إنشاء نص من مسافات

cellstrإنشاء مجموعة من خلايا النصوص من مجموعة الأحرف
char

تحويل إلى مجموعة من الأحرف (نص)

iscellstrتحديد ما إذا كانت المدخلات هي مجموعة خلايا نصية
ischarتحديد ما إذا كان العنصر هو مجموعة من الأحرف
sprintfتحويل البيانات إلى نص منسق
strcatدمج النصوص أفقيًا
strjoinدمج النصوص في نطاق خلية كنص واحد
تحديد جزء من النص، وظائف البحث والإحالة للنص الفرعي
ischarتحديد ما إذا كان العنصر هو مجموعة من الأحرف
isletterمكون من النص كحرف
isspaceمكون من النص كمسافة
isstrpropتحديد ما إذا كان النص ينتمي إلى فئة معينة
sscanfقراءة بيانات منسقة من النص
strfindالبحث عن نص فرعي داخل نص آخر
strrepالبحث عن نص فرعي وإحالته
strsplitتقسيم النص عند حرف تقسيم محدد
strtokجزء مختار من النص
validatestringفحص صحة النص المكون من الكلمات
symvarتحديد الرموز المتغيرة في التعبير
regexpالتوافق مع تعبير النص النموذجي (التفريق بين الحروف الكبيرة والصغيرة)
regexpi

匹配正则表达式(不区分大小写)

regexprep使用正则表达式替换字符串
regexptranslate

将字符串转换为正则表达式

字符串比较功能
strcmp比较字符串(区分大小写)
strcmpi

比较字符串(不区分大小写)

strncmp比较字符串的前n个字符(区分大小写)
strncmpi

比较字符串的前 n 个字符(不区分大小写)

用于将字符串更改为大写或小写,创建或删除空格的函数
deblank从字符串末尾去除尾随空白
strtrim删除字符串的前导和尾随空格
lower将字符串转换为小写
upper将字符串转换为大写
strjust对齐字符数组

实例

以下示例说明了上述一些字符串函数-

格式化字符串

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

A = pi*1000*ones(1,5);
sprintf(' %f \n %.2f \n %+.2f \n %12.2f \n %012.2f \n', A)

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

ans = 3141.592654 
   3141.59 
   +3141.59 
      3141.59 
   000003141.59

连接字符串

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

%字符串单元格数组
str_array = {'red','blue','green', 'yellow', 'orange'};
%将单元格数组中的字符串合并为单个字符串
str1 = strjoin(str_array, "-")
str2 = strjoin(str_array, ",")

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

str1 = red-blue-green-yellow-orange
str2 = red,blue,green,yellow,orange

查找和替换字符串

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

students = {'Zara Ali', 'Neha Bhatnagar', ...}
            'Monica Malik', 'Madhu Gautam', ...
            'Madhu Sharma', 'Bhawna Sharma', ...
            'Nuha Ali', 'Reva Dutta', ...
            'Sunaina Ali', 'Sofia Kabir';
 
%strrep函数搜索并替换子字符串。
new_student = strrep(students(8), 'Reva', 'Poulomi')
%عرض الأسماء
first_names = strtok(students)

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

new_student = 
{
   [1,1] = Poulomi Dutta
}
first_names = 
{
   [1,1] = Zara
   [1,2] = Neha
   [1,3] = Monica
   [1,4] = Madhu
   [1,5] = Madhu
   [1,6] = Bhawna
   [1,7] = Nuha
   [1,8] = Reva
   [1,9] = Sunaina
   [1,10] = Sofia
}

مقارنة النصوص

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

str1 = 'This is test'
str2 = 'This is text'
if (strcmp(str1, str2))
   sprintf('%s and %s are equal', str1, str2)
else
   sprintf('%s and %s are not equal', str1, str2)
fin

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

str1 = This is test
str2 = This is text
ans = This is test and This is text are not equal