What is wrong with my code short simple function using only - if,for,length and variables)?
1 view (last 30 days)
Show older comments
I needed to write a function that uses only if for length and variables and calls another function - valFind(that runs very well-added below), my function gets:1) a vector 2)an arrays of numbers to search for and brings back the first places in which those numbers appear in the vector (or 0 if they don't appear) for example:
% code
a=[2 4 6 8 4 2]
b=[2 8 9]
c=valFindAll(a,b) --> [1 4 0]
this is valFind (runs fine the problem is in the text function)
% code
function [result] = valFind(a,b)
result = [];
for ii=1:length(a)
if a(ii) == b
result = [result ii];
end
end
this is the function that (I don't know why) doesn't run
% code
function [resultVec] = valFindAll(a,v)
resultVec =[];
for ii=1:length(v)
[result]=valFind(a,v(ii));
if result == []
resultVec = [resultVec 0];
else
resultVec = [resultVec result(1)];
end
end
0 Comments
Accepted Answer
Huseyin Kaya
on 15 Dec 2013
Edited: Huseyin Kaya
on 15 Dec 2013
Just change
result == []
with
length(result) == 0
and everything will work fine.
More Answers (1)
Jan
on 15 Dec 2013
You can use isempty(result) instead of result == [].
Another more efficient method:
function [resultVec] = valFindAll(a,v)
resultVec = zeros(1, length(v));
for ii = 1:length(v)
result = valFind(a,v(ii)); % No brackets around left hand side
if ~isempty(result)
resultVec(ii) = result;
end
end
0 Comments
See Also
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!