How to find the matlab interp1 computational complexity?
    6 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Kalasagarreddi Kottakota
 el 26 de Oct. de 2023
  
    
    
    
    
    Comentada: Kai Angermueller
 el 9 de Abr. de 2025
            Hi, 
I am trying find the computational complexity of interp1 with 'linear', and "cubic". Can I get some help regarding this?
I am thinking it is O(n) and O(n^3). Are these correct?
1 comentario
  Bruno Luong
      
      
 el 26 de Oct. de 2023
				"Are these correct?"
 No, O(n^3) is completely off (over estimated), see my answer. Also you don't tell what n is.
Respuesta aceptada
  Bruno Luong
      
      
 el 26 de Oct. de 2023
        
      Editada: Bruno Luong
      
      
 el 26 de Oct. de 2023
  
      If N is the number of data points (x, y), M is the query points (xq)
interp1(x, y, xq, ...)
has complexity of O(M*log(N)) for all methods, if x is sorted. 
Essentially it is the time of query where xq are located in subintervals. Time of interpolation value are constant per point even for spline method.
If x is not sorted then you need to add log(N) of sorting but then the O notation remains the same
7 comentarios
  Kalasagarreddi Kottakota
 el 2 de Nov. de 2023
				
      Editada: Kalasagarreddi Kottakota
 el 2 de Nov. de 2023
  
			
  Kai Angermueller
 el 9 de Abr. de 2025
				if you actually try running interp1 with various N and tic/toc the run time, you'll find it's actually O(M*N) for sorted  :( This is terrible. It's also strange that it's O(M*N) whether you are searching for xq near the bottom end of x, the middle, or near the top end of x. So it's not just doing a linear serach. But it's also not scaling like any sort of binary/tree search. Strange and bad.
Más respuestas (0)
Ver también
Categorías
				Más información sobre Multidimensional Arrays en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!