Matlab函数比较两个字符串的元素

时间:2013-02-22 11:01:49

标签: matlab

我想编写一个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)

我不知道为什么会这样?

3 个答案:

答案 0 :(得分:2)

sortuniqueismember等函数不仅定义了数字,还定义了字符串的单元格数组。因此,我认为没有必要将字符串转换为数字。

关于你的错误 - 你需要提供字符串,而不是单元格数组,即

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的函数可以做到这一点!