ANEXO A ANEXO A PROGRAMA DE CÁLCULO I ANEXO A %******************************************************* % PROGRAMA DE CÁLCULO % Programa para calcular los espectros de respuesta % Autor: Gustavo Hernández %******************************************************* %******************************************************* % Lectura de datos %******************************************************* clc clear all close all fid=fopen('ficherosb1.m') nt=40 for i=1:nt clear senyal clc linea=fgetl(fid) fichero=linea(1:12); ffid=fopen(fichero) for in=1:5 lineatonta2=fgetl(ffid); if in==3 muestreo=eval(lineatonta2(12:14)); end end dt=1/muestreo; senyal2=fscanf(ffid,'%g',inf); tiempo=[0:(length(senyal2)-1)]'*dt; npt=length(senyal2); senyal2=senyal2/98; %******************************************************* % Discretizacion a paso fijo del fichero original %******************************************************* tinicial=tiempo(1); tfinal=tiempo(npt); % N=4096; N=2048; metodo='linear'; senyal(:,1)=tiempo; senyal(:,2)=senyal2; y=equipl(senyal,tinicial,tfinal,N, metodo); x1=y(:,1); y1=y(:,2); dt=x1(2)-x1(1); II ANEXO A %******************************************************* % Figura 1: Acelerograma original y corregida %******************************************************* figure(1); plot(tiempo,senyal2,'b-',x1,y1,'r-.'); xlabel('tiempo(s)'); ylabel('aceleracion(cm/seg^2)'); %******************************************************* % Figura 2: Espectro de Fourier de la señal original %******************************************************* df=1./(dt*N); y2f=fft(y1); y2am=abs(y2f)*dt; freq=[0:N-1]'*df; per=freq; np2=N/2; xper=per(2:np2); y2ff=y2am(2:np2); figure(2) loglog(xper,y2ff,'k-') xlabel('frecuencia(Hz)') ylabel('/FFT/(cm/seg^2)') legend(linea) mensaje='he acabado la transformada de Fourier' pause %******************************************************* % Corrección línea base por filtrado %******************************************************* norden=3; fl=0.4; % fh=0.66; x(:,1)=x1; x(:,2)=y1; fs=1/(2*dt); wa1=fl/fs; % wa2=fh/fs; [b,a]=butter(norden,wa1,'high'); yfc1=filtfilt(b,a,x(:,2)); pga=max(abs(yfc1)); %******************************************************* % Figura 3: Acelerograma filtrado %******************************************************* figure(3) plot(x1,yfc1,'r-') xlabel('tiempo(s)') ylabel('aceleracion(cm/seg^2)') mensaje='senyal filtrada paso altas' III ANEXO A %******************************************************* % Figura 4: Transformada de Fourier de la señal filtrada %******************************************************* y3f=fft(yfc1); y3am=abs(y3f)*dt; xper=per(2:np2); y3ff=y3am(2:np2); figure(4) loglog(xper,y3ff,'k-') xlabel('frecuencia(Hz)') ylabel('/FFT/(cm/seg^2)') legend('senyal filtrada') legend(fichero) mensaje='he acabado la segunda transformada de Fourier' %******************************************************* % Figura 5: Espectro de respuesta con el 5% de amortiguamiento % Integral de Duhamel, %******************************************************* mensaje='inicio de los calculos para espectros de respuesta' xnu=0.05; nperiodos=70.; periodoinicial=0.04; periodofinal=2; deltaperiodo=(periodofinal-periodoinicial)/(nperiodos-1.); h = waitbar(0,'Por favor espere, ...'); for k=1:nperiodos; periodo=periodoinicial+(k-1)*deltaperiodo; xomega=2.*pi/periodo; xp(k)=periodo; [uu,uup,uupp]=sduhamel3(x1,yfc1,xnu,xomega); ssa(k)=max(abs(uupp)); clear uu uup uupp; waitbar(k/nperiodos,h) end %******************************************************* % Normalización del espectro %******************************************************* ssan=ssa/pga; close(h) ssa2(i,:)=ssan; %****************************************************** % Cálculo del espectro NCSE-02 %****************************************************** n=11 for k=1:n per1(k)=(k-1)/100; alfa1(k)=1+(1.5*per1(k))/0.1; end n=31 IV ANEXO A for k=1:n per2(k)=k/100; per3(k)=0.09+per2(k); alfa2(k)=2.5; end n=200 for k=1:n per4(k)=k/100; per5(k)=0.39+per4(k); alfa3(k)=1/per5(k); end figure(5) hold on % plot(xp,san,'b-') % hold on % xlabel('periodo(s)') % ylabel('sa') % legend(linea) plot(xp,ssan,'b-') hold on xlabel('periodo(s)') ylabel('sa') legend(linea) mensaje='fin programa' clc end hold on %******************************************************* % Cálculo de la media y la desviación estándar de los espectros % Dibujo de la media y la desviación estándar de los espectros %******************************************************* hold on sa3=mean(sa2); sa4=std(sa2); sa5=sa4+sa3; sa6=sa3-sa4; plot(xp,sa3,'g-') plot(xp,sa5,'r-') plot(xp,sa6,'r-') plot(per1,alfa1,'k-') plot(per3,alfa2,'k-') plot(per5,alfa3,'k-') ssa3=mean(ssa2); ssa4=std(ssa2); ssa5=ssa4+ssa3; ssa6=ssa3-ssa4; hold on plot(xp,ssa3,'g-') plot(xp,ssa5,'r-') plot(xp,ssa6,'r-') V