matlab字符与字符串

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Name
x3 x4 x5 x6
3x3 4x4 5x5 6x6
Size
72 128 200 288
Bytes Class
double array double array double array double array
Grand total is 86 elements using 688 bytes
NCU MCM 暑期培训
字符串数组的转换


mat2str 指令可将矩阵转换为字符串,此字符 串若再经由 eval 指令的使用,可再变回原先 的矩阵 范例10-32: string405.m
% 将矩阵 A 转成字符串 B % 再将字符串 B 转回矩阵 A2 % 测试 A 和 A2 是否相等
A = [1 2 1; 3 5 6 ]; B = mat2str(A) A2 = eval(B) isequal(A, A2)
sentence = 'I''ve got a date!'; sentenceAscii = double(sentence); %检视 sentence 的 ASCII 码 sentence2 = char(sentenceAscii) % 将 ASCII 码转回字符串形式
phraseascii = Columns 1 through 12 73 39 118 101 32 103 111 116 32 97 32 100 Columns 13 through 16 97 116 101 33 sentence2 = I've got a date!
fid = fopen('tbig5.txt'); line = fgetl(fid); fclose(fid); line2 = xlate(line) leng = length(line2) line2 = 我是Roger ans = 7 % 读取一列档案内容 % 使用 xlate 将被猜开的中文结合在一起 % 显示字符串长度
NCU MCM 暑期培训
字符与字符串的基本概念


Matlab 用「单引号」来界定字符串变量,多个 字符串变量可直接并排,以得到一个新字符串 变量,例如: 范例10-2: string102.m
str1 = 'I like MATLAB,'; str2 = ' JavaScript, and Perl!'; str3 = [str1 str2] str3 % 建立字符串变量 str1 % 建立字符串变量 str2 % 直接并排str1 及 str2,以建立
% out2 的值是 0,代表 x 不是一个字符串变量

字符串变量所占用的空间是同长度双精 准(Double)数值变数的四分之一
NCU MCM 暑期培训
2 一个变量来储存多个字符串


第一种方法是使用二维字符数组(Two Dimensional Character Arrays) 必须先确认每个字符串(即每一横列)的长度 一样,否则就必须在短字符串结尾补上空格符 范例10-13: string201.m

str3 = I like MATLAB, JavaScript, and Perl!
NCU MCM 暑期培训
字符与字符串的基本概念



欲输入含有单引号的字符串,可重复单引号的 使用 若要计算字符串变量的长度(即组成字符的个 数),可用 length 指令 范例10-4: string104.m
parsed = ee cs econ stat me
NCU MCM 暑期培训
字符串的结合

MATLAB 在读入中文字符串时,将每一个中文字的 2byte 分开来读,造成两个中文字变成四个字符串元素 xlate 指令: 将中文的 2-byte 「结合」在一起 范例10-27: string309.m
得到结果和前一个范例依样; 从二维字符数组抽取出字符串时,切记要使用 deblank 指令来移除尾部的空格符 范例10-15: string203.m
departments = char('ee', 'cs', 'econ'); dept1 = departments(1,:); % (1,:)代表第一列的元素 dept2 = deblank(dept1); % 使用 deblank 指令来移除尾部的空格符 len1 = length(dept1) % 显示变量 dept1 的长度=4 len2 = length(dept2) % 显示变量 dept2 的长度=2
CUMCM 暑期培训
马新生 南昌大学数学系
字符与字符串
2007,7
NCU MCM 暑期培训
简介



本章介绍 MATLAB 用于处理字符(Characters) 与字符串(Strings)的指令及相关数据型态。 MATLAB 处理字符串的相关指令大部分都放在 下列目录之中: {MATLAB 根目录}\toolbox\matlab\strfun 其中的「strfun」就是代表「String Functions」。若要查询与字符和字符串相关的 指令,可在 MATLAB 下输入: help strfun 或是 help strings
sentence = 'I''ve got a date!'; length(sentence) % 计算字符串变量 sentence 的长度
ans =
16
NCU MCM 暑期培训
字符串和其ASCII code

double 指令: 检视字符串变量的储存内容(即 ASCII 内码) char 指令: 将 ASCII 内码转回字符串形式 范例10-6: string106.m
NCU Baidu NhomakorabeaCM 暑期培训
1 字符与字符串的基本概念



数个字符(Characters)可以构成一个字 符串(Strings) 一个字符串是被视为一个列向量(Row Vector)进行储存 此一字符串中的每一字符(含空格符), 是以其 ASCII 码的形式存放于此列向量 中的每一个元素(Element)
NCU MCM 暑期培训
字符与字符串的基本概念-eval

eval 指令: 直接“执行”某一特定字符串,其效果就如同直接在 MATLAB 指令窗口内输入此一特定字符串 eval 指令特别适用于在 for - loop 内自动产生有规律的变量名称 范例10-11: string111.m
clear all for i = 3:6 end whos x* % 清除所有变量 eval(['x', int2str(i) , '= magic(' , int2str(i) , ') ; ']);

sscanf 可依给定的格式来解析出所要的字符串或数值 范例10-34: string407.m
mat = 2.0000 4.7000 5.2000
str = '2 4.7 5.2'; mat = sscanf(str, '%f')
.
NCU MCM 暑期培训
一个变量来储存多个字符串



当字符串的长度差异甚大,那么使用二维字符 数组来储存多个字符串,将造成内存空间的浪 费,怎么办? 「异质数组」: 使用大括号框住多个字符串, 或 用cellstr指令将字符数组转换成异质数组 (string204.m,string205.m) 若要将包含字符串的异质数组转换成一般的二 维字符数组,还是可以使用 char 指令
% 注意空格符的使用
departments = ['ee '; 'cs '; 'econ']
departments = ee cs econ
NCU MCM 暑期培训
一个变量来储存多个字符串

用char 指令储存多个字符串
% 注意「()」及「,」的使用
departments = char('ee', 'cs', 'econ')
NCU MCM 暑期培训
10-4 字串、数值与数组的转换



int2str 指令: 将整数型态的数据转换成字 符串数据 例如:y = int2str(x), x为整数, y 为字符串 num2str 指令: 将实数转为字符串 dec2hex 指令: 将 10 进位数值数据转换 成 16 进位的字符串表示法 更多类似指令如 : hex2num, hex2dec, bin2dec….
NCU MCM 暑期培训
字符的储存



无论是中文或英文,每一个字符都会占用两个字节(2 Bytes),故在上页中,字符串变量 sentence 总共由 16 个字符构成,占用的内存总计为三十二个字节(32 bytes) whos 指令: 检视字符串变量 sentence 所占用储存空 间(whos 变量) MATLAB 是以两个字节来储存一个字符,所以也可以 支持 Big5 的中文码,而且 Big5 中文的 ASCII 内码都 会大于数字 128 由于 MATLAB 将字符串以其相对应之 ASCII 内码(即 数字形式)储存成一列向量,故若对此字符串直接进 行数值运算,MATLAB 会先将此字符串转成数值,再 进行一般数值向量的运算
% 比较两字符串 str1 和 str2 = 0 % 比较两字符串 str1 和 str3 = 1

不相等回传0,相等回传1 DIFFERENT to C
NCU MCM 暑期培训
字符串的比较和寻找




strncmp 指令: 用于比较字符串的前 n 个 字符 strcmp 及 strncmp 指令亦可用于字符串 异质数组 findstr 指令: 寻找在某一个长字符串中的 子字符串(Substrings),并传回其起始 位置 strrep 指令: 用于字符串寻找及代换,例 如:
B= [1 2 1;3 5 6] ans = 1
NCU MCM 暑期培训
字串与数值的结合


sprintf 指令: 结合数值或字符串,以产生新字符串 (%s-印出字符串,%g-印出数值,可使用 %f 或加上控制 印出位数大小的数字 ) 范例10-33: string406.m
str = '圆周率'; newString = sprintf('「%s」是 %g', str, pi) newString = 「圆周率」是 3.14159
3 字符串的比较、寻找、 代换、分解与结合

NCU MCM 暑期培训
strcmp 指令: 用于比较字符串内容的异 同 范例10-19: string301.m
str1 = 'today'; str2 = 'tomorrow'; str3 = 'today'; out1 = strcmp(str1, str2) out2 = strcmp(str1, str3)
newString = strrep(string, pattern, pattern2)
NCU MCM 暑期培训
字符串的分解

strtok 指令: 根据一给定的分界字符(Delimiting Characters),将一字 符串拆解成数个字符串,预设分界字符为空格符 strvcat 指令: 将拆解下来的字符串内容(即储存在字符串变量 chopped 中) 加到二维字符数组 parsed 中 范例10-24: string306.m
input_string = 'ee cs econ stat me'; remainder = input_string; parsed = ''; % 建立一空字符数组 while (any(remainder)) [chopped, remainder] = strtok(remainder); parsed = strvcat(parsed, chopped); end parsed

x3 , x4 , x5 , x6 都是在 for - loop 中产生的变量,分别代表维度为 3× 3、 4× 4、5× 5、6× 6 的魔方阵
NCU MCM 暑期培训
字符串的判断


class 或 ischar 指令: 判断某一个变量是 否为字符串 范例10-12: string112.m
chinese = '今日事,今日毕'; out1 = class(chinese) 串变量 x = chinese+1; out2 = ischar(x) % out1 的值是 “char”,代表chinese 是字符
相关文档
最新文档