MATLAB - สตริง
การสร้างสตริงอักขระนั้นค่อนข้างง่ายใน MATLAB ที่จริงเราใช้มาหลายครั้งแล้ว ตัวอย่างเช่นคุณพิมพ์สิ่งต่อไปนี้ในพรอมต์คำสั่ง -
my_string = 'Tutorials Point'
MATLAB จะดำเนินการตามคำสั่งข้างต้นและส่งกลับผลลัพธ์ต่อไปนี้ -
my_string = Tutorials Point
MATLAB ถือว่าตัวแปรทั้งหมดเป็นอาร์เรย์และสตริงถือเป็นอาร์เรย์อักขระ ให้เราใช้ไฟล์whos คำสั่งตรวจสอบตัวแปรที่สร้างขึ้นด้านบน -
whos
MATLAB จะดำเนินการตามคำสั่งข้างต้นและส่งกลับผลลัพธ์ต่อไปนี้ -
Name Size Bytes Class Attributes
my_string 1x16 32 char
ที่น่าสนใจคือคุณสามารถใช้ฟังก์ชันการแปลงตัวเลขเช่น uint8 หรือ uint16เพื่อแปลงอักขระในสตริงเป็นรหัสตัวเลข char ฟังก์ชันแปลงเวกเตอร์จำนวนเต็มกลับเป็นอักขระ -
ตัวอย่าง
สร้างไฟล์สคริปต์และพิมพ์รหัสต่อไปนี้ -
my_string = 'Tutorial''s Point';
str_ascii = uint8(my_string) % 8-bit ascii values
str_back_to_char= char(str_ascii)
str_16bit = uint16(my_string) % 16-bit ascii values
str_back_to_char = char(str_16bit)
เมื่อคุณเรียกใช้ไฟล์จะแสดงผลลัพธ์ต่อไปนี้ -
str_ascii =
84 117 116 111 114 105 97 108 39 115 32 80 111 105 110 116
str_back_to_char = Tutorial's Point
str_16bit =
84 117 116 111 114 105 97 108 39 115 32 80 111 105 110 116
str_back_to_char = Tutorial's Point
อาร์เรย์อักขระสี่เหลี่ยม
สตริงที่เราพูดถึงจนถึงตอนนี้คืออาร์เรย์อักขระหนึ่งมิติ อย่างไรก็ตามเราต้องจัดเก็บมากกว่านั้น เราจำเป็นต้องจัดเก็บข้อมูลที่เป็นข้อความที่มีมิติมากขึ้นในโปรแกรมของเรา สิ่งนี้ทำได้โดยการสร้างอาร์เรย์อักขระสี่เหลี่ยม
วิธีที่ง่ายที่สุดในการสร้างอาร์เรย์อักขระสี่เหลี่ยมคือการต่ออาร์เรย์อักขระหนึ่งมิติสองมิติขึ้นไปทั้งแนวตั้งหรือแนวนอนตามต้องการ
คุณสามารถรวมสตริงในแนวตั้งได้ด้วยวิธีใดวิธีหนึ่งดังต่อไปนี้:
การใช้ตัวดำเนินการเชื่อมต่อ MATLAB []และคั่นแต่ละแถวด้วยอัฒภาค (;) โปรดทราบว่าในวิธีนี้แต่ละแถวต้องมีจำนวนอักขระเท่ากัน สำหรับสตริงที่มีความยาวต่างกันคุณควรเว้นวรรคตามความจำเป็น
ใช้ 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 -
ฟังก์ชัน | วัตถุประสงค์ |
---|---|
ฟังก์ชั่นสำหรับจัดเก็บข้อความในอาร์เรย์อักขระรวมอาร์เรย์อักขระ ฯลฯ | |
ช่องว่าง | สร้างสตริงของอักขระว่าง |
cellstr | สร้างอาร์เรย์เซลล์ของสตริงจากอาร์เรย์อักขระ |
ถ่าน | แปลงเป็นอาร์เรย์อักขระ (สตริง) |
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 ตัวแรกของสตริง (ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่) |
ฟังก์ชันสำหรับการเปลี่ยนสตริงเป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็กสร้างหรือลบช่องว่าง | |
หนี้ | ตัดช่องว่างต่อท้ายจากส่วนท้ายของสตริง |
strtrim | ลบช่องว่างนำหน้าและต่อท้ายออกจากสตริง |
ต่ำกว่า | แปลงสตริงเป็นตัวพิมพ์เล็ก |
ด้านบน | แปลงสตริงเป็นตัวพิมพ์ใหญ่ |
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
การเข้าร่วมสตริง
สร้างไฟล์สคริปต์และพิมพ์รหัสต่อไปนี้ -
%cell array of strings
str_array = {'red','blue','green', 'yellow', 'orange'};
% Join strings in cell array into single string
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'};
% The strrep function searches and replaces sub-string.
new_student = strrep(students(8), 'Reva', 'Poulomi')
% Display first names
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)
end
เมื่อคุณเรียกใช้ไฟล์จะแสดงผลลัพธ์ต่อไปนี้ -
str1 = This is test
str2 = This is text
ans = This is test and This is text are not equal