What is wrong with my code short simple function using only - if,for,length and variables)?
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Risposta accettata
Huseyin Kaya
il 15 Dic 2013
Modificato: Huseyin Kaya
il 15 Dic 2013
Just change
result == []
with
length(result) == 0
and everything will work fine.
Più risposte (1)
Jan
il 15 Dic 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 Commenti
Vedere anche
Categorie
Scopri di più su Matrix Indexing in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!