在MATLAB中进行特殊比较

时间:2014-02-03 05:18:25

标签: matlab

嗨,我正在努力实现这个目标:

for i=1:maxaps
    for j=1:length(num2)
        **if (isequal(sortedCell(i),txt2(j)) && sortedCell(i)~=0)** %important line
            rssi2sorted(i)=rssi2(j); %I don't think we need matching part
        break;
        end
    end
end            

我收到此错误:

??? Undefined function or method 'ne'
for input arguments of type 'cell'.

Error in ==> sortingmethod at 116
        if
        (isequal(sortedCell(i),txt2(j))
        && sortedCell(i)~=0)

如果我这样做:

for i=1:maxaps
    for j=1:length(num2)
        **if (isequal(sortedCell{i},txt2(j)) && sortedCell(i)~=0)** %important line
            rssi2sorted(i)=rssi2(j); %I don't think we need matching part
        break;
        end
    end
end       
由于格式:

,因此无法比较元素
>> sortedCell{1}

ans =

00:1e:58:f4:15:f7

>> txt2(6)

ans = 

    '00:1e:58:f4:15:f7'

有关如何解决此问题的任何建议?

谢谢!

2 个答案:

答案 0 :(得分:2)

我认为问题实际上是这个部分(你的错误引用的ne):

sortedCell(i)~=0

您将单元格而不是其内容与零进行比较。你应该使用:

sortedCell{i}~=0


修改

如果问题不是关于错误消息,而是如何比较字符串,请使用strcmp(绝不要使用==eqisequal进行比较字符串):

if strcmp(sortedCell{i},txt2(j))
    ...
end

我不知道您添加的&& sortedCell{i}~=0部分是什么,但如果需要,您可以将其添加回来。

strcmp也将单元格数组作为输入(请参阅文档),这样您就可以摆脱for循环。我不知道你的代码是做什么的,但也许你可以使用这样的东西:

for j=1:length(num2)
    c = strcmp(sortedCell,txt2(j));
    if any(c)
        rssi2sorted(c)=rssi2(j);
        break;
    end
end

答案 1 :(得分:0)

使用strcmp(strcmpi忽略大小写)来测试字符串是否相同,isequal用于测试值是否在数值上相等。 e.g。

if ( strcmp(sortedCell{i},txt2(j)) && sortedCell(i)~=0 )