matlab创建字符,MATLAB字符串数组的创建与运算(转载)字符串数组主要⽤于可视化编程内容,如界⾯设计和图形绘制。
1.字符串变量的创建
字符变量的创建⽅法是:在指令窗⼝中先把待建的字符放在“单引号对”中,再按回车键。注意,该“单引号对”必须在英⽂状态下输⼊。这“单引号对”是MATLAB⽤来识别字符串变量所必须的。如:
>>a='This is an example.'
a =
This is an example.
>>msg = 'You''re right!'
%创建带单引号的字符串
msg =
You're right!
2.字符串数组的标识
字符串变量的每个字符(英⽂字母、空格和标点都是平等的)占据⼀个元素位,在数组中元素所处的位置⽤⾃然数标识。如:
>>b=a(1:4) % 提出⼀个⼦字符串
b =
This
ra=a(end:-1:1) % 字符串的倒排
ra =
.elpmaxe na si sihT
⼜如:
>>A='这是⼀个算例。';
>>B=size(A) % 符号数组 A 的“⼤⼩”
B =
1 7
>>C=A([5 6]) % 提出⼀个⼦字符串
C =
算例
3.字符串的ASCII码
字符串的存储是⽤ASCII码实现的。指令abs和double都可以⽤来获取串数组所对应的ASCII码数值数组。指令char可把ASCII码数组变为串数组。如
>>d=double(a)
d =
84 104 105 115 32 105 115 32 97 110 32 101 120 97 109 112 108 101
46
>>char(d)
ans =
This is an example.
对字符串ASCII码数组的操作:使字符串中字母全部⼤写
>>w=find(a>='a'&a<='z');
%出串数组a中,⼩写字母的元素位置。
>>d(w)=d(w)-32;
%⼤⼩写字母ASCII值差32⽤数值加法改变部分码值。
>>char(d) %把新的ASCII码翻成字符
ans =
THIS IS AN EXAMPLE.
4.字符串数组的运算
>>Aa=[A,a]
Aa =
这是⼀个算例。This is an example.
>>name = strcat('Thomas',' R.','
Lee') %连接两个字符串,每个字符串最右边的空格被裁切
name =
Thomas R. Lee
>>D=strvcat('Hello','Yes','No','Goodbye')
%利⽤串操作函数创建多⾏串数组, 连接多⾏字符串,每⾏长度可不等,⾃动把⾮最长字符串最右边补空格,使与最长字符串相等,会忽略空字符串。
D =
Hello
Yes
No
Goodbye
5. 字符串替换和查
strrep—进⾏字符串替换,区分⼤⼩写
>>strrep(str1,str2,str3)
%它把str1中所有的str2字串⽤str3来替换
strfind(str,patten) %查str中是否有pattern,返回出现位置,没有出现返回空数组
findstr(str1,str2) %查str1和str2中,较短字符串在较长字符串中出现的位置,没有出现返回空数组
strmatch(patten,str) %检查patten是否和str最左侧部分⼀致
strtok(str,char) %返回str中由char指定的字符串前的部分和之后的部分,
6.常⽤字符串操作函数
blanks(n)—创建有n个空格组成的字符串
deblank(str)—裁切字符串的尾部空格
strtrim(str)—裁切字符串的开头和尾部的空格,制表,回车符
lower(str)—将字符串中的字母转换成⼩写
upper(str)—将字符串中的字母转换成⼤写
sort(str)—按照字符的ASCII值对字符串排序
num2str—将数字转换为数字字符串
str2num—将数字字符串转换为数字
mat2str—将数组转换成字符串
数组转换成字符串int2str—把数值数组转换为整数数字组成的字符数组
7.其他字符串操作函数
strcmp—⽐较两个字符串是否完全相等,是,返回真,否则,返回假strncmp—⽐较两个字符串前n个字符是否相等,是,返回真,否则,返回假strcmpi—⽐较两个字符串是否完全相等,忽略字母⼤⼩写
strncmpi—⽐较两个字符串前n个字符是否相等,忽略字母⼤⼩写
isletter—检测字符串中每个字符时否属于英⽂字母
isspace—检测字符串中每个字符是否属于格式字符(空格,回车,制表,换⾏符等) isstrprop—检测字符每⼀个字符是否属于指定的范围.
8.字符串的显⽰和打印
>>g=’abcd’;
>> disp(g)
abcd
>>h=rand(2,2); %产⽣2*2随机阵
>>s=num2str(h) %把数值数组转换为串数组
s =
0.95013 0.60684
0.23114 0.48598
>>s_s=sprintf('%.10e\n',a)
数位科学记述串,每写⼀个元素就换⾏。
s_s =
9.5012928515e-001
2.3113851357e-001
6.0684258354e-001
4.8598246871e-001
>>fprintf('% .5g \\',a)
%以5位数位最短形式显⽰。不能赋值⽤。
0.95013\0.23114\0.60684\0.48598\ >>s_sscan=sscanf(s_s,'%f',[3,2])
%浮点格式把串转换成3*2数值数组。
s_sscan =
0.9501 0.4860
0.2311 0
0.6068 0
>>
A='AGTCGTAGGTAGGCGATGATGACGAT'; n=length(A)
N=zeros(1,4);
for i=1:n
if A(i)=='A'
N(1)= N(1)+1;
elseif A(i)=='T'
N(2)= N(2)+1;
elseif A(i)=='G'
N(3)= N(3)+1;
elseif A(i)=='C'
N(4)= N(4)+1;
end
end
disp('A T G C')
N
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论