%% prog20230616Distorsion clearvars; clear all; close all; clc; %% lectura de audio y variables principales %audio y frecuencia de muestreo [x,fs] = audioread('violin.wav'); N = length(x); %longitud del arreglo dt = 1/fs; %intervalo de muestreo t = (0:N-1)*dt; %tiempo %grafico figure(1) plot(t,x,'b'); title('violin'); xlabel('tiempo t (s)'); ylabel('presion sonora p(t) (Pa)'); legend('x(t)'); axis([min(t),max(t),-1.25*max(abs(x)),1.25*max(abs(x))]); grid on; box on; %sonido sound(x,fs); %% distorsion arcotangente g1 = input('ganancia g1 = '); y1 = (2/pi)*atan(g1*x); figure(2) plot(t,y1,'r'); title('violin distorsion1'); xlabel('tiempo t (s)'); ylabel('presion sonora p(t) (Pa)'); legend('y_1(t)'); axis([min(t),max(t),-1.25*max(abs(y1)),1.25*max(abs(y1))]); grid on; box on; %sonido sound(y1,fs); figure(3) plot(t,y1,'r',t,x,'b'); title('violin distorsion1'); xlabel('tiempo t (s)'); ylabel('presion sonora p(t) (Pa)'); legend('y_1(t)','x(t)'); axis([min(t),max(t),-1.25*max(abs(y1)),1.25*max(abs(y1))]); grid on; box on; figure(4) plot(x,y1,'r'); title('funcion de transferencia no lineal'); xlabel('x(t) (Pa)'); ylabel('y_1(t) (Pa)'); legend('H_{G1}'); axis([-1.25*max(abs(x)),1.25*max(abs(x)),-1.25*max(abs(y1)),1.25*max(abs(y1))]); grid on; box on; %% uso de subplot %subplot sirve para presentar varios graficos dentro de una misma ventana %su uso es el siguiente %figure(k) "k" es un numero natural %subplot(n,m,j) "m","n" y "j" son numeros naturales donde m es fila (horizontal) % n es columna(vertical) % j es numero de grafico % j = 1,2,3,...m*n %despues del comando subplot vienen los comando plot, semilogy,etc figure(5) subplot(2,2,1) plot(t,x,'b'); title('violin'); xlabel('tiempo t (s)'); ylabel('presion sonora p(t) (Pa)'); legend('x(t)'); axis([min(t),max(t),-1.25*max(abs(x)),1.25*max(abs(x))]); grid on; box on; subplot(2,2,2) plot(t,y1,'r'); title('violin distorsion1'); xlabel('tiempo t (s)'); ylabel('presion sonora p(t) (Pa)'); legend('y_1(t)'); axis([min(t),max(t),-1.25*max(abs(y1)),1.25*max(abs(y1))]); grid on; box on; subplot(2,2,3) plot(t,y1,'r',t,x,'b'); title('violin distorsion1'); xlabel('tiempo t (s)'); ylabel('presion sonora p(t) (Pa)'); legend('y_1(t)','x(t)'); axis([min(t),max(t),-1.25*max(abs(y1)),1.25*max(abs(y1))]); grid on; box on; subplot(2,2,4) plot(x,y1,'r'); title('funcion de transferencia no lineal'); xlabel('x(t) (Pa)'); ylabel('y_1(t) (Pa)'); legend('H_{G1}'); axis([-1.25*max(abs(x)),1.25*max(abs(x)),-1.25*max(abs(y1)),1.25*max(abs(y1))]); grid on; box on; %% distorsion sigmoide g2 = input('ganancia g2 = '); y2 = 1./(1 + exp(-g2*x)) - 0.5 ; %normalizacion entre -1 y 1 y2 = y2/max(abs(y2)); sound(y2,fs); figure(6) plot(t,y2,'r'); title('violin distorsion2'); xlabel('tiempo t (s)'); ylabel('presion sonora p(t) (Pa)'); legend('y_2(t)'); axis([min(t),max(t),-1.25*max(abs(y2)),1.25*max(abs(y2))]); grid on; box on; figure(7) subplot(1,2,1) plot(t,x,'b'); title('violin'); xlabel('tiempo t (s)'); ylabel('presion sonora p(t) (Pa)'); legend('x(t)'); axis([min(t),max(t),-1.25*max(abs(x)),1.25*max(abs(x))]); grid on; box on; subplot(1,2,2) plot(t,y2,'r'); title('violin distorsion2'); xlabel('tiempo t (s)'); ylabel('presion sonora p(t) (Pa)'); legend('y_2(t)'); axis([min(t),max(t),-1.25*max(abs(y2)),1.25*max(abs(y2))]); grid on; box on; figure(8) subplot(2,1,1) plot(t,x,'k'); title('violin'); xlabel('tiempo t (s)'); ylabel('presion sonora p(t) (Pa)'); legend('x(t)'); axis([min(t),max(t),-1.25*max(abs(x)),1.25*max(abs(x))]); grid on; box on; subplot(2,1,2) plot(t,y2,'g'); title('violin distorsion2'); xlabel('tiempo t (s)'); ylabel('presion sonora p(t) (Pa)'); legend('y_2(t)'); axis([min(t),max(t),-1.25*max(abs(y2)),1.25*max(abs(y2))]); grid on; box on;