冲击响应谱计算的matlab程序
更新时间:2024-05-31 14:14:01 阅读量: 综合文库 文档下载
disp(' ')
disp(' srs.m ver 2.0 July 3, 2006')
disp(' by Tom Irvine Email: tomirvine@aol.com') disp(' ')
disp(' This program calculates the shock response spectrum') disp(' of an acceleration time history, which is pre-loaded into Matlab.') disp(' The time history must have two columns: time(sec) & acceleration') disp(' ') %
clear t; clear y; clear yy; clear n; clear fn; clear a1; clear a2 clear b1; clear b2; clear jnum; clear THM; clear resp; clear x_pos; clear x_neg; %
iunit=input(' Enter acceleration unit: 1= G 2= m/sec^2 '); %
disp(' ')
disp(' Select file input method '); disp(' 1=external ASCII file ');
disp(' 2=file preloaded into Matlab '); file_choice = input(''); %
if(file_choice==1)
[filename, pathname] = uigetfile('*.*'); filename = fullfile(pathname, filename); %
fid = fopen(filename,'r');
THM = fscanf(fid,'%g %g',[2 inf]); THM=THM'; else
THM = input(' Enter the matrix name: '); end %
t=double(THM(:,1));
y=double(THM(:,2)); %
tmx=max(t); tmi=min(t); n = length(y); %
out1 = sprintf('\\n %d samples \\n',n); disp(out1) %
dt=(tmx-tmi)/(n-1); sr=1./dt; %
out1 = sprintf(' SR = %g samples/sec dt = %g sec \\n',sr,dt); disp(out1) %
fn(1)=input(' Enter the starting frequency (Hz) '); if fn(1)>sr/30. fn(1)=sr/30.; end %
idamp=input(' Enter damping format: 1= damping ratio 2= Q '); %
disp(' ') if(idamp==1)
damp=input(' Enter damping ratio (typically 0.05) '); else
Q=input(' Enter the amplification factor (typically Q=10) '); damp=1./(2.*Q); end %
disp(' ')
disp(' Select algorithm: ')
disp(' 1=Kelly-Richman 2=Smallwood '); ialgorithm=input(' '); %
tmax=(tmx-tmi) + 1./fn(1); limit = round( tmax/dt ); n=limit;
yy=zeros(1,limit); for i=1:length(y) yy(i)=y(i); end %
disp(' ')
disp(' Calculating response..... ') %
% SRS engine %
for j=1:1000 %
omega=2.*pi*fn(j);
omegad=omega*sqrt(1.-(damp^2)); cosd=cos(omegad*dt); sind=sin(omegad*dt); domegadt=damp*omega*dt; %
if(ialgorithm==1)
a1(j)=2.*exp(-domegadt)*cosd; a2(j)=-exp(-2.*domegadt); b1(j)=2.*domegadt;
b2(j)=omega*dt*exp(-domegadt);
b2(j)=b2(j)*( (omega/omegad)*(1.-2.*(damp^2))*sind -2.*damp*cosd ); b3(j)=0; %
else E=exp(-damp*omega*dt); K=omegad*dt; C=E*cos(K); S=E*sin(K); Sp=S/K; % a1(j)=2*C; a2(j)=-E^2; b1(j)=1.-Sp; b2(j)=2.*(Sp-C); b3(j)=E^2-Sp; end
forward=[ b1(j), b2(j), b3(j) ]; back =[ 1, -a1(j), -a2(j) ]; %
resp=filter(forward,back,yy); %
x_pos(j)= max(resp); x_neg(j)= min(resp); %
jnum=j;
if fn(j) > sr/8.
break end
fn(j+1)=fn(1)*(2. ^ (j*(1./12.))); end %
% Output options %
disp(' ')
disp(' Select output option ');
choice=input(' 1=plot only 2=plot & output text file ' ); disp(' ') %
if choice == 2 %%
[writefname, writepname] = uiputfile('*','Save SRS data as'); writepfname = fullfile(writepname, writefname); writedata = [fn' x_pos' (abs(x_neg))' ]; fid = fopen(writepfname,'w'); fprintf(fid,' %g %g %g\\n',writedata'); fclose(fid); %%
% disp(' Enter output filename '); % SRS_filename = input(' ','s'); %
% fid = fopen(SRS_filename,'w'); % for j=1:jnum
% fprintf(fid,'%7.2f .3f .3f \\n',fn(j),x_pos(j),abs(x_neg(j))); % end
% fclose(fid); end %
% Plot SRS %
disp(' ')
disp(' Plotting output..... ') %
% Find limits for plot %
srs_max = max(x_pos);
if max( abs(x_neg) ) > srs_max srs_max = max( abs(x_neg )); end
srs_min = min(x_pos);
if min( abs(x_neg) ) < srs_min srs_min = min( abs(x_neg )); end %
figure(1);
plot(fn,x_pos,fn,abs(x_neg),'-.'); %
if iunit==1
ylabel('Peak Accel (G)'); else
ylabel('Peak Accel (m/sec^2)'); end
xlabel('Natural Frequency (Hz)'); Q=1./(2.*damp);
out5 = sprintf(' Acceleration Shock Response Spectrum Q=%g ',Q); title(out5); grid;
set(gca,'MinorGridLineStyle','none','GridLineStyle',':','XScale','log','YScale','log');
legend ('positive','negative',2); %
ymax= 10^(round(log10(srs_max)+0.8)); ymin= 10^(round(log10(srs_min)-0.6)); %
fmax=max(fn); fmin=fmax/10.; %
fmax= 10^(round(log10(fmax)+0.5)); %
if fn(1) >= 0.1 fmin=0.1; end
if fn(1) >= 1 fmin=1; end
if fn(1) >= 10 fmin=10; end
if fn(1) >= 100 fmin=100; end
axis([fmin,fmax,ymin,ymax]); %
disp(' ')
正在阅读:
冲击响应谱计算的matlab程序05-31
学校教师个人思想工作总结优选范本04-04
当老师不在的时候作文600字07-12
男朋友保证书03-17
中医八项操作培训版12-20
七管收音机实验报告12-12
让我温暖的记忆作文600字07-04
党校培训座谈会发言稿03-23
青少年励志文章02-19
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 响应
- 冲击
- 计算
- 程序
- matlab