![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
matlab中strrep函数的用法问题
%在matlab中,strrep函数的替换规则是怎样的,strrep(str1,str2,str3)是用从str1从找到str2用str3替换,那下面的程序该如何理解?c...
%在matlab中,strrep函数的替换规则是怎样的,strrep(str1,str2,str3)是用从str1从找到str2用str3替换,那下面的程序该如何理解?
c={'signal processing','image processing';'MATLAB','SIMULINK'};
>> b={'handle graphics','real time workshop';'toolboxes','the math works'}
b =
'handle graphics' 'real time workshop'
'toolboxes' 'the math works'
>> a={'j'}
a =
'j'
>> strrep(a,b,c)
ans =
'j' 'j'
'j' 'j' 展开
c={'signal processing','image processing';'MATLAB','SIMULINK'};
>> b={'handle graphics','real time workshop';'toolboxes','the math works'}
b =
'handle graphics' 'real time workshop'
'toolboxes' 'the math works'
>> a={'j'}
a =
'j'
>> strrep(a,b,c)
ans =
'j' 'j'
'j' 'j' 展开
1个回答
展开全部
strrep的输入参数可以是单个的字符串,也可以是由字符串组成的cell数组。
由于这个函数是built-in函数,无法看到其实现的代码,但可以想见其大致的处理思路:
1、如果三个输入参数中存在cell数组,为便于统一处理,字符串会被转换成1x1的cell数组(可以看作是“字符串类型的标量”)。
2、接下来就是一个标量自动扩展的问题:如果三个cell数组中有的元素数量大于1,那些数组的维数应当一致(否则会报错),而1x1的cell数组则会像普通数值矩阵与标量运算那样,被自动扩展为和其它数组相同的维数,然后,对cell的每个对应单元进行strrep操作。
具体到你的问题上:a为1x1 cell,而b和c为2x2 cell,则a会被自动扩展为2x2 cell,即{'j' 'j'; 'j' 'j'}。然后对cell的各元素分别进行替换,由于'j'这个字符串不包含b的四个元素中的任何一个,所以未进行任何真正的替换,结果仍然是 {'j' 'j'; 'j' 'j'}。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询