我想编写一个Matlab函数来比较两个字符串的元素,因此给定单个字符串数组的字符串,它将返回单个单元格数组,但按字母顺序返回,例如function({'car','apple','bus'})
所以我写了一个将两个字符串的元素相互比较并分配数值的子函数:
function [ out ] = comparestrings( a,b )
for k=1:min(length(a),length(b))
if a(1,k)<b(1,k)
out=1;
return
elseif b(1,k)<a(1,k)
out=0;
return
end
end
if length(a)<length(b)
out=1;
else out=0;
end
end
但是当我尝试在Matlab中运行我的程序时,它表示行中存在错误
if a(1,k) < b(1,k)
我不知道为什么会这样?
答案 0 :(得分:2)
sort
,unique
和ismember
等函数不仅定义了数字,还定义了字符串的单元格数组。因此,我认为没有必要将字符串转换为数字。
关于你的错误 - 你需要提供字符串,而不是单元格数组,即
myCellArray = {'car','apple'}
compareStrings(myCellArray{1},myCellArray{2})
使用大括号,可以访问单元格数组元素的内容,而使用括号时,您将提供单元格,并且没有为单元格定义<
。
答案 1 :(得分:1)
我在GNU / Linux下的Matlab R2010a中运行了你的代码,它运行正常。我已将您的功能保存在名为comparestring.m
的文件中,然后我可以通过以下方式调用它:
comparestrings('car','apple')
ans =
0
comparestrings('apple', 'car')
ans =
1
也许你没有正确地调用你的功能?
无论如何,如果你不需要自己创建一个函数,你可以使用Matlab的内置函数sort
:
sort({'car','apple','bus'})
ans =
'apple' 'bus' 'car'
答案 2 :(得分:0)
顺便说一下,matlab中有一个名为strcmp的函数可以做到这一点!