检查值是否在MATLAB中的函数返回值中

时间:2013-10-21 10:44:48

标签: matlab

我有一个在大多数情况下返回单个元素的函数。在特定情况下,它返回一个向量。如何有效地检查函数的返回值/值中是否存在给定值。?

for i=1:n

x=somefunc(data)
//now x could be single value or vector
//say k single value, k=5. 
if(k==x)  // This works if x is single value. What to do in case x is vector.?
//do something
end
// k value changes in every loop, so does x.
end

2 个答案:

答案 0 :(得分:2)

这是一个非常模糊的问题。你是说这个:

value = 5;
array = [1 5 4 6 7];

any(array==value)

答案 1 :(得分:2)

我可能会用

ismember(value, array)

如果您希望它快速,最好的办法是尝试其他选项并对其进行分析。最佳解决方案将取决于函数返回向量而不是标量的频率。以下是几个选项:

// Use ismember on every iteration
if ismember(k, x)
  // do things
end

// Use any on every iteration
if any(k==x)
  // do thing
end

// Check if you have a scalar value, call ismember if not
if isscalar(x) && k==x || ismember(k,x)
  // do things
end

// Check if you have a scalar value, call any if not
if isscalar(x) && k==x || any(k==x)
  // do things
end

您可以使用profile on打开探查器,运行该功能,然后使用profile viewer查看结果。或者,您可以使用tictoc进行更简单的时间安排。