How to make 2 data sets the same size
    14 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
    Angela
 il 17 Giu 2014
  
    
    
    
    
    Modificato: Madina Makhmutova
 il 22 Feb 2019
            Hello,
I have two data sets (Temperature over Time and Absorption over Time) over the same time interval. The problem is that one set has 6000 values(~10 per second) and the other one 900(~1.5 per second). I would like to cut down both sets to the same size, by taking the average value for each second, but I am not sure how to do this. The function I am writing is getting rather convoluted and confusing with several nested loops, so I am wondering if there is some easy way to do this that I am overlooking.
Thanks in advance for any help, Angela
Risposta accettata
  Kevin Claytor
      
 il 17 Giu 2014
        Have a look at the resample function;
>> help resample
 resample  Change the sampling rate of a signal.
    Y = resample(X,P,Q) resamples the sequence in vector X at P/Q times
    the original sample rate using a polyphase implementation.  Y is P/Q 
    times the length of X (or the ceiling of this if P/Q is not an integer).  
    P and Q must be positive integers.
For example you would be looking at;
time_a = linspace(1,10,900);
time_t = linspace(1,10,6000);
temp = rand(size(time_t))
absorb = rand(size(time_a));
temp_undersampled = resample(temp, length(absorb), length(temp));
size(temp_undersampled)
This is a pretty rough example, and if you want to go the other way, there's interp1 (that's a 1 not an ell) - but the usual caveats apply with interpolation.
0 Commenti
Più risposte (1)
  Andrei Bobrov
      
      
 il 17 Giu 2014
        x1 = randi(500,6000,1); % your data
x2 = randi(600,900,1);  %
Fx1 = griddedInterpolant(x1);
Fx2 = griddedInterpolant(x2);
out = [Fx1(linspace(1,numel(x1),600)'), Fx2(linspace(1,numel(x2),600)')];
1 Commento
  Madina Makhmutova
 il 22 Feb 2019
				
      Modificato: Madina Makhmutova
 il 22 Feb 2019
  
			Dear Andrei,
How can I adjust this code without using for loops if instead of being a vector x1 is a matrix?
x1 = randi(500,6000,5);
Thank you.
Vedere anche
Categorie
				Scopri di più su Multirate Signal Processing in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



