| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 668 人关注过本帖
标题:求指导。。。本程序for循环中的程序是什么意思?怎样理解?
只看楼主 加入收藏
anpengqiang
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-9-25
结帖率:0
收藏
已结贴  问题点数:20 回复次数:1 
求指导。。。本程序for循环中的程序是什么意思?怎样理解?
%随机减量法模态参数识别预处理
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear
clc
close all hidden
format long
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fni=input('随机减量法模态参数识别预处理-输入数据文件名:','s');
fid=fopen(fni,'r');
sf = fscanf(fid,'%f',1);     %采样频率
np = fscanf(fid,'%d',1);     %输出数据长度
fno = fscanf(fid,'%s',1);    %输出数据文件名
x = fscanf(fid,'%f',[1,inf]);%输入时程信号数据存成行向量
status=fclose(fid);
%建立离散输出时间向量
t=0:1/sf:(np-1)/sf;
%取输入数据长度
nt=length(x);
%设置截取振幅为输入信号标准差的1.5倍
s=1.5*std(x);
%获取输入信号的子样本函数进行叠加
m=0;
y=zeros(1,np);
for k=2:nt-np
  a=abs(x(k-1)-s);
  b=abs(x(k)-s);
  c=abs(x(k+1)-s);
  if b<a & b<c
    y(1:np)=y(1:np)+x(k:k+np-1); m=m+1;
  end
end
%对叠加结果做平均
y=y./m;
%绘制自由振动时程曲线图
plot(t,y);
xlabel('时间 (s)');  
ylabel('幅值');
grid on;                        

%打开文件输出随机减量法计算的结果               
fid=fopen(fno,'w');   
for k=1:np                           
  fprintf(fid,'%f\n',y(k));
end                           
status=fclose(fid);
搜索更多相关主题的帖子: status 
2013-09-25 16:31
303770957
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:838
专家分:2125
注 册:2005-9-10
收藏
得分:20 
是这个循环:
for k=2:nt-np %做循环k从2到nt-np,步长为1
  a=abs(x(k-1)-s);%计算一个行向量中连续(从第一个元素开始)三个元素分别与振幅之间的绝对值。
  b=abs(x(k)-s); %第二个元素与振幅之间的绝对值
  c=abs(x(k+1)-s);%第三个元素与振幅之间的绝对值

  if b<a & b<c  %如果行向量中连续三个元素中的第二个元素与振幅之间的绝对值最小则执行下面的语句
    y(1:np)=y(1:np)+x(k:k+np-1);%这个应该是行向量相加的运算
    m=m+1;%记录这种操作的次数,为对叠加结果做平均而准备的m
  end
end

还是这个循环:
for k=1:np % k从1开始到np结束,步长为1.                      
  fprintf(fid,'%f\n',y(k));%这个应该是将计算结果循环写入文件当中去。
end  

♂ 死后定当长眠,生前何须久睡。♀
2013-09-25 17:08
快速回复:求指导。。。本程序for循环中的程序是什么意思?怎样理解?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013341 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved