Clear Filters
Clear Filters

can anyone explain this coding to me? i dont understand it at all? why the need for the function vec and Daubechies filter?

1 view (last 30 days)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%% Voice Record %%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %This program records the voice function [norm_voice,h] = Voice_Rec(sample_freq) option = 'n'; option_rec = 'n'; record_len = 1; %Record time length in seconds %sample_freq = 8192; %Sampling frequency in Hertz sample_time = sample_freq * record_len; 'Get ready to record your voice' name = input('Enter the file name you want to save the file with: ','s'); file_name = sprintf('%s.wav',name); option_rec = input('Press y to record: ','s'); if option_rec=='y' while option=='n', input('Press enter when ready to record--> '); record = wavrecord(sample_time, sample_freq); %Records the input through the sound card to the variable with specified sampling frequency input('Press enter to listen the recorded voice--> '); sound(record, sample_freq); option = input('Press y to save or n to record again: ','s'); end wavwrite(record, sample_freq, file_name); %Save the recorded data to a file with the specified file name in .wav format end [voice_read,FS,NBITS]=wavread(file_name); norm_voice = normalize(voice_read); norm_voice = downsmpl(norm_voice, sample_freq); le=32; h=daubcqf(le,'min'); function vec = normalize(vec) temp_vec = vec-mean(vec); sum_temp_vec = sum(temp_vec.*temp_vec); sqrt_temp_vec = sqrt(sum_temp_vec); vec = (1/sqrt_temp_vec)*temp_vec; function sampled = downsmpl(voice, freq) x=freq; y = freq/2; z=1; a=1; sampled=0; while z<freq, sampled(a) = sqrt(abs(voice(z)*voice(z+1))); a=a+1; z = z+2; end sampled = sampled'; function [h_0,h_1] = daubcqf(N,TYPE) % [h_0,h_1] = daubcqf(N,TYPE); % % Function computes the Daubechies' scaling and wavelet filters % (normalized to sqrt(2)). % % Input: % N : Length of filter (must be even) % TYPE : Optional parameter that distinguishes the minimum phase, % maximum phase and mid-phase solutions ('min', 'max', or % 'mid'). If no argument is specified, the minimum phase % solution is used. % % Output: % h_0 : Minimal phase Daubechies' scaling filter % h_1 : Minimal phase Daubechies' wavelet filter % % Example: % N = 4; % TYPE = 'min'; % [h_0,h_1] = daubcqf(N,TYPE) % h_0 = 0.4830 0.8365 0.2241 -0.1294 % h_1 = 0.1294 0.2241 -0.8365 0.4830 % if(nargin < 2), TYPE = 'min'; end; if(rem(N,2) ~= 0), error('No Daubechies filter exists for ODD length'); end; K = N/2; a = 1; p = 1; q = 1; h_0 = [1 1]; for j = 1:K-1, a = -a * 0.25 * (j + K - 1)/j; h_0 = [0 h_0] + [h_0 0]; p = [0 -p] + [p 0]; p = [0 -p] + [p 0]; q = [0 q 0] + a*p; end; q = sort(roots(q)); qt = q(1:K-1); if TYPE=='mid', if rem(K,2)==1, qt = q([1:4:N-2 2:4:N-2]); else qt = q([1 4:4:K-1 5:4:K-1 N-3:-4:K N-4:-4:K]); end; end; h_0 = conv(h_0,real(poly(qt))); h_0 = sqrt(2)*h_0/sum(h_0); %Normalize to sqrt(2); if(TYPE=='max'), h_0 = fliplr(h_0); end; if(abs(sum(h_0 .^ 2))-1 > 1e-4) error('Numerically unstable for this value of "N".'); end; h_1 = rot90(h_0,2); h_1(1:2:N)=-h_1(1:2:N);

Answers (0)

Categories

Find more on Chemistry in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!