What is wrong with my code short simple function using only - if,for,length and variables)?
    6 visualizzazioni (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 Loops and Conditional Statements 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!


