help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How can I increase/decrease (frequency/pitch) and phase using fft/if


From: Sergei Steshenko
Subject: Re: How can I increase/decrease (frequency/pitch) and phase using fft/ifft tia sal22
Date: Mon, 4 Apr 2011 14:33:31 -0700 (PDT)

--- On Mon, 4/4/11, Rick T <address@hidden> wrote:

From: Rick T <address@hidden>
Subject: How can I increase/decrease (frequency/pitch) and phase using fft/ifft 
tia sal22
To: address@hidden
Date: Monday, April 4, 2011, 2:11 PM

How can I increase/decrease (frequency/pitch) and phase using fft/ifft 
 I think I have the basic code but I’m not sure what to do next 
 
PS: Thanks for the help on the last question everyone I decided not to use the 
FOR loop and sin/cos values and just use fft/ifft


to see if this will work.
Example I have a signal that repeats 1 time every second and I want to 
 have it repeat 3 times a second instead. 
  %Voiceprint raise lower freq phase conjugate signal 
 tic 


 clear all, clc,clf,tic 
 %% Sound /beep calculation complete 
 filerawbeepStr='calculations_complete.wav'; 
 filerawbeeppathStr='/home/rat/Documents/octave/raw/'; 
 filevoiceprepathStr='/home/rat/Documents/octave/eq_research/main/ 


 transform/voice/'; 
 filewavpathStr='/home/rat/Documents/octave/eq_research/main/transform/ 
 wav/'; 
 [ybeep, Fsbeep, nbitsbeep] = 
 wavread(strcat(filerawbeeppathStr,filerawbeepStr)); 
 %addpath(”/home/rat/Documents/octave/eq_research/main/transform/”); 


 %add path to location of functions 
 %1a voice print import 
 [vp_sig_orig, fs_rate, nbitsraw] = 
 wavread(strcat(filevoiceprepathStr,'voice8000fs.wav')); 
 %vp_sig_orig=vp_sig_orig’; 


 vp_sig_len=length(vp_sig_orig); 
 %2a create frequency domain 
 ya_fft = fft(vp_sig_orig); 
 vp_sig_phase_orig = unwrap(angle(ya_fft)); 
 %get Magnitude 
 ya_fft_mag = abs(ya_fft); 
 

%3a frequency back to time domain 
 ya_ifft=real(ifft(ya_fft)); 
 %adjust frequency/phase here? How? 
 vp_sig_new=real(ifft(ya_fft_mag.*exp(i*vp_sig_phase_orig))); 
 subplot(3,1,1), plot(vp_sig_orig),title('1 original time domain') 


 subplot(3,1,2), plot(ya_ifft),title('2 rebuild time domain') 
 subplot(3,1,3), plot(vp_sig_new),title('3 adjusted time') 




-----Inline Attachment Follows-----

_______________________________________________
Help-octave mailing list
address@hidden
https://mailman.cae.wisc.edu/listinfo/help-octave

So, regarding your


"
Example I have a signal that repeats 1 time every second and I want to 
 have it repeat 3 times a second instead. 
"

- why do you need FFT in the first place ?

I.e. if 'x' is your signal, why not simply write

x = linspace(0, 1, 10); % or whatever other way to generate your signal
y = [x x x]; % repeat x 3 times
plot(y);


?

Regards,
  Sergei.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]