ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Determinación de la respuesta en frecuencia a largo plazo (LTA)


Enviado por   •  29 de Octubre de 2022  •  Práctica o problema  •  1.078 Palabras (5 Páginas)  •  64 Visitas

Página 1 de 5

[pic 1][pic 2][pic 3]


PROBLEMA 1

Determinación de la respuesta en frecuencia a largo plazo (LTA).

Para realizar este ejercicio se ha creado una función llamada ‘LTA’ que tiene como parámetros de entrada la señal (‘x’), el tamaño del bloque (‘tam’), el número de bloques (que vendrá ya con el solapamiento deseado, ‘Nbloques’) y la ventana a utilizar (‘v’). Por otro lado, tendrá como parámetros de salida el espectro LTA global (‘LTA_Global’) y una matriz que contendrá el espectro LTA por cada minuto de grabación (‘LTA_Min’). [pic 4]

function [LTA_Global, LTA_Min] = LTA(x,tam,Nbloques,v)

end

Para saber cuántas ventanas tenemos en toda la grabación se divide la longitud de la grabación entre el tamaño que va a tener cada ventana.[pic 5]

ventana = length(x)/tam; %Total de ventanas de la grabación

Como hay una ventana por segundo (ya que el tamaño de la ventana que le pasamos es igual a la frecuencia de muestreo), tenemos tantas ventanas como segundos tiene la grabación. Sabiendo esto, se pueden calcular cuantos bloques habrá en un minuto y el total de minutos de la grabación (para determinar el LTA para cada uno de ellos).

min = ventana/60; % Se sacan los minutos de la grabación[pic 6]

bloques_1min = floor((60*Nbloques)/ventana);% Se calcula el num de bloques que hay en 1 min

Mediante el siguiente bucle se calcula el número de bloque que corresponde a cada minuto de la grabación.

% Se calcula el bloque al que correspone el minuto 1, 2, 3...[pic 7]

posicion_bloques_1min = zeros(floor(min),1);

for k = 1:min

    posicion_bloques_1min(k) = floor((60*Nbloques*k)/ventana);

end

Con este doble bucle se va calculando el LTA por minutos. Cuando ya se tiene calculado el primer minuto, se representa promediando por el total de bloques que hay en ese minuto y se almacena en la matriz LTA_Min (cada columna corresponde a un minuto) y así sucesivamente hasta completar todos los minutos.

salida=zeros(tam,1);[pic 8]

LTA_Min = zeros(tam,floor(min));

for i=0:Nbloques-1

    for j = 1:length(posicion_bloques_1min)

        if (i == posicion_bloques_1min(j)) %Se representa cada vez que llega al minuto

            valores_promedios = salida./bloques_1min;%Se promedian los valores

            LTA_Min(:,j) = valores_promedios; %Se almacenan los valores de cada representación (minuto) para luego hacer la media

            % Se resetea para el siguiente minuto

            salida=zeros(tam,1);

        end

    end

    % Se coge cada ventana con solapamiento 50%

    x1=x((tam/2)*i+1:(tam/2)*i+tam).*v;

    % Se calcula el LTA[pic 9]

    fft_bloque = fft(x1);

    mod_fft = abs(fft_bloque);

    salida = salida + mod_fft;

end

Para calcular el promediado, dependiendo si la grabación tiene más de un minuto (ya que si es menor la media será igual a la grabación) se hace la media utilizando la función de Matlab mean.

% Se calcula la media de los valores para representar[pic 10]

if (floor(min) == 1)

    LTA_Global = LTA_Min';

else

    LTA_Global = mean(LTA_Min');

end

Para probar el código, se ha utilizado como tamaño de la ventana el de la frecuencia de muestreo, el número de bloques se ha calculado teniendo un solapamiento del 50% y una ventana tipo Blackman.

[x,fs] = audioread('candy.mp3');[pic 11]

x = x(:,1); %Se coge solo 1 canal

tam = fs; %El tamaño de la ventana es igual a la frec. de muestreo

ventana = length(x)/tam; %Total de ventanas de la grabación

 

Nbloques=2*floor(ventana)-1;%al ser solapamiento 50% se multiplica

...

Descargar como (para miembros actualizados) txt (7 Kb) pdf (435 Kb) docx (271 Kb)
Leer 4 páginas más »
Disponible sólo en Clubensayos.com