Simple question about plotting a convolution
    19 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
    aurc89
 am 25 Mär. 2015
  
    
    
    
    
    Bearbeitet: Bruno Luong
      
      
 am 26 Sep. 2019
            I have two sets of data (x,y1) and (x,y2).I need to calculate the convolution between y1 and y2 and plot it vs x. Is it correct to do simply like this?
convol=conv(y1,y2);
plot(x,convol)
I've never used the command conv and I'm not sure about it. Thanks!
0 Kommentare
Akzeptierte Antwort
  Hamza OUDICH
      
 am 25 Sep. 2019
        Be careful, the amplitude given by conv is not correct, it should be multiplied by the step difference in x since conv is an summation approximation of the integral in Matlab. Besides, 'same' removes the first elements to get a list with the same length as x..... so you lose SO MUCH information which can give you complete false result.
2 Kommentare
  Bruno Luong
      
      
 am 25 Sep. 2019
				
      Bearbeitet: Bruno Luong
      
      
 am 26 Sep. 2019
  
			+1, if the data does not have constant step, using CONV gives incorrect result.
You probably need to interpolate the y data with a constant step, THEN apply conv. 
Can't believe such answer was accepted. 
Weitere Antworten (1)
  Andrew Newell
      
 am 25 Mär. 2015
        
      Bearbeitet: Andrew Newell
      
 am 25 Mär. 2015
  
      Your code will give you a vector of length length(y1)+length(y2)-1, so you'll get an error if you plot it against x (which is presumably the same length as y1 and y2). Instead, use
convol = conv(y1,y2,'same')
which gives you the central part of the convolution of the same size as y1. Then you'll be able to plot it.
Siehe auch
Kategorien
				Mehr zu Annotations finden Sie in Help Center und File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



