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'
展开
 我来答
tianxiawulang
推荐于2017-09-28 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2636万
展开全部

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'}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式