String Matlab中字符串和字符的区别是什么?
MATLAB中字符串和字符类的区别是什么String Matlab中字符串和字符的区别是什么?,string,matlab,char,String,Matlab,Char,MATLAB中字符串和字符类的区别是什么 a = 'AX'; % This is a character. b = string(a) % This is a string. 委员会: 在MATLAB®中有两种表示文本的方法。可以将文本存储在字符数组中。一个典型的用途是将短文本段存储为字符向量。从2016b版开始,您还可以在字符串数组中存储多段文本。字符串数组提供了一组用于将文本作为数据处理的函数 这就是两种表述的不同之处: 元素访问。为了表示不同长度的char向量,必须使用cell数组,例
a = 'AX'; % This is a character.
b = string(a) % This is a string.
委员会:
在MATLAB®中有两种表示文本的方法。可以将文本存储在字符数组中。一个典型的用途是将短文本段存储为字符向量。从2016b版开始,您还可以在字符串数组中存储多段文本。字符串数组提供了一组用于将文本作为数据处理的函数
这就是两种表述的不同之处:
- 元素访问。为了表示不同长度的
向量,必须使用char
数组,例如cell
。使用字符串,可以在实际数组中创建它们:ch={'a','ab','abc'}
。 但是,要直接在字符串数组中输入,必须使用花括号表示法:str=[string('a')、string('ab')、string('abc')]
str{3}(2) % == 'b'
- 内存使用。字符每个字符正好使用两个字节<代码>字符串s有开销:
返回a = 'abc' b = string('abc') whos a b
- 字符数组是字符序列,正如数字数组是数字序列一样。一个典型的用法是将短文本作为字符向量存储,例如
c='helloworld'代码>
- 字符串数组是文本片段的容器。字符串数组提供了一组用于将文本作为数据处理的函数。要将文本转换为字符串数组,请使用
函数string
- 它们是不同的类别(即类型):与。因此,他们将为每种方法定义不同的方法集。想一想你想对你的文本做什么样的操作,然后选择一个最能支持这些操作的
- 由于
是一个容器类,请注意其大小与等效字符数组表示形式的不同。以您的例子:字符串
请注意,>> a = 'AX'; % This is a character. >> b = string(a) % This is a string. >> whos Name Size Bytes Class Attributes a 1x2 4 char b 1x1 134 string
容器将其大小列为string
(并在内存中占用更多字节),而字符数组,顾名思义,是一个1x1
字符数组1x2
- 它们不能总是互换使用,对于某些操作,您可能需要在两者之间进行转换。例如,
对象不能用作:string
- 字符串确实有一些开销,但每个字符仍会增加2个字节。每8个字符后,它会增加变量的大小。红线是
y=2x+127
图是使用以下方法创建的:
v=[];N=100;
for ct = 1:N
s=char(randi([0 255],[1,ct]));
s=string(s);
a=whos('s');v(ct)=a.bytes;
end
figure(1);clf
plot(v)
xlabel('# characters')
ylabel('# bytes')
p=polyfit(1:N,v,1);
hold on
plot([0,N],[127,2*N+127],'r')
hold off
需要注意的一个重要的实际问题是,字符串和字符在与方括号交互时的行为不同。当来自python时,这可能会特别令人困惑。考虑下面的例子:
>>['asdf' '123']
ans =
'asdf123'
>> ["asdf" "123"]
ans =
1×2 string array
"asdf" "123"
v=[];N=100;
for ct = 1:N
s=char(randi([0 255],[1,ct]));
s=string(s);
a=whos('s');v(ct)=a.bytes;
end
figure(1);clf
plot(v)
xlabel('# characters')
ylabel('# bytes')
p=polyfit(1:N,v,1);
hold on
plot([0,N],[127,2*N+127],'r')
hold off
>>['asdf' '123']
ans =
'asdf123'
>> ["asdf" "123"]
ans =
1×2 string array
"asdf" "123"