【发布时间】:2015-05-25 09:32:03
【问题描述】:
问题描述:
trs 接受字符串的行或列向量,两个字符为ch1 和ch2。如果ch1 与trs 中的任何元素匹配,则trs 的该元素将被ch2 替换。如果ch1 不在向量中,trs 将原样返回。
一个简单的例子:
输入:ww = kellen({‘YOYO’, ‘YOYO’},’Y’,’X’),
输出:ww = {‘XOXO’,’XOXO’}
我假设strrep 函数可以使这个问题变得更容易,但我想知道 MATLAB 如何在不使用strrep 函数的情况下处理这个问题的最基本水平。所以我请求你们在不使用strrepfunction 的情况下更正我的代码。
我是 MATLAB 新手。确实,我也是编程新手。我知道我必须先学习 C 基础知识,但我不知道为什么我要努力。
这是我的代码,但它似乎不起作用。
function ww = kellen(trs,ch1,ch2)
[r c] = size(trs);
if r == 1 && c > 1
for i = 1:c
ind = trs{i} == ch1;
trs{1,i}(ind==1) = ch2;
ww = trs;
end
if r == 1 && c ==1
for i = 1:c
ind = trs{i} == ch1;
trs{1,i}(ind==1) = ch2;
ww = trs
end
end
当字符串向量的大小为行向量时,我的代码工作正常,但当我传递 trs 字符串的标量时,我的函数工作不正常。例如:
kellen({ 'peter piper picked a peck of pickled peppers' }, 'p', 'b')
我应该修改代码的哪一部分?
【问题讨论】:
-
请详细解释什么“似乎不起作用”,它是错误的还是只是产生了错误的输出?如果是后者,请准确解释输出有什么问题
-
>> ww = kellen({'YOYO', 'YOYO'},'Y','X') 错误使用 == 矩阵尺寸必须一致。如果 trs{i} == 'ch1' 出现 kellen 错误(第 7 行)
-
您的输出变量是
ww,它被设置为trs的副本。它没有在其他任何地方修改,因此除非失败,否则它将返回未修改的输入。 -
感谢 xenoclast 的提示
-
您的
if声明完全没有必要。为什么要以不同方式处理标量或行向量?没有必要。你也错过了end