ANEXO A

Anuncio
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
Descargar