单元数组中strcmp函数出现问题。

3

我正在使用值如下的单元数组 a

a = {'one', 'two'; 'four', 'five'};

现在我只是将a与某个字符串(如'two')进行比较,然后在其中添加另一列,并插入字符串

a{strcmp(a,'two'),3} ='Three' ; 

我得到了以下输出
 a = 

     'one'     'two'          []
     'four'    'five'         []
         []        []    'Three'

但实际上我想要的输出如下:
 a = 

     'one'     'two'     'Three'
     'four'    'five'         []

我该怎么做呢?


1
如果您在命令行中只键入 strcmp(a,'two'),会得到什么?提示:请阅读线性索引,并尝试执行 for ii = 1:4 disp(a{ii}) end 的结果。 - Dan
我得到了这样的结果 **strcmp(a,'two') = [ 0 1; 0 0] ; ** - Karthick Rajan
哦,我以为你会得到“3”,但是忘记了你需要先调用“find”来实现这个。 - Dan
1
那么,您只是在尝试找到与搜索字符串匹配的行吗?在这种情况下,请尝试使用find(any(strcmp(a,'two'),2)) - Dan
感谢 Dan 的帮助。 - Karthick Rajan
1个回答

2

您是否考虑过在任务中使用映射

%// create map
keySet =   {'one', 'two', 'three', 'four', 'five', 'six','seven','eight'};
valueSet = [1, 2, 3, 4, 5, 6, 7 ,8];
mapObj = containers.Map(keySet,valueSet);

%// data
a = {'one' , 'two' ; 'four', 'five'};

%// analyze data
Nums = cell2mat(values(mapObj,a));

%// expand data
Nums(:,3) = Nums(:,2) + 1

%// output
output = keySet(Nums)

output = 

    'one'     'two'     'three'
    'four'    'five'    'six' 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接