卡卡卡帅 发表于 2014-6-18 15:37

chybeyond 发表于 2014-6-17 23:19
〖新手必读〗之如何获取积分,提高权限(新)http://forum.vibunion.com/thread-47704-4-1.html

晕,这个点开就是这个帖子的内容啊

刘义红色枫叶 发表于 2014-7-17 15:56

本帖最后由 牛小贱 于 2015-3-8 16:14 编辑

我改了圆频率向量之后,用标准的正弦信号加上一个常数项,得出的位移有上升的趋势,下面是我的程序:
function PY1(xx)
%频域积分法求速度及位移
fs=1000;                     %采样频率
% ff=20;
% N=1000;
% tt=(0:N-1)/fs;
% xx=3*sin(2*pi*ff*tt)+0.02;
fmin=0.2;                  %最小截止频率
fmax=500;                  %最大截止频率
c=9.88e+003;               %单位变换系数,位移单位为mm
it=2;                        %积分次数

n=length(xx);
t=0:1./fs:(n-1)./fs;         %建立时间向量
nfft=2^nextpow2(n);          %FFT变换长度,大于并最接近n的2的幂次方为FFT的长度
y=fft(xx,nfft);               %FFT变换

subplot(3,1,2);            %绘制积分前的时程曲线图形
plot(t,xx,'k-');
xlabel('时间(s)');
ylabel('加速度幅值(g)');
title('图2 加速度时程曲线图');
grid on;

%=========================================================================%
%%%%%%%%%%%%%%%%%%%%%   绘制频谱图,计算机床振动频率   %%%%%%%%%%%%%%%%%%%%
%=========================================================================%

P=y.*conj(y)/nfft;         %求取功率密度,其中conj(y)是求y的共轭
f=fs*(0:(nfft/2-1))/nfft;    %设定频率变化范围
subplot(3,1,1);
plot(f,P(1:nfft/2),'b-');    %绘制频谱图
xlabel('频率(Hz)');
ylabel('功率密度');
title('图1 功率密度频谱图');
grid on;

%=========================================================================%
%%%%%%%%%%%%%%%%%%%%%%      进行积分的频域变换       %%%%%%%%%%%%%%%%%%%%%
%=========================================================================%

df=fs/nfft;                  %计算频率间隔(Hz/s)
ni=round(fmin/df+1);         %计算指定频带对应频率数组的下标
na=round(fmax/df+1);
dw=2*pi*df;                  %计算圆频率间隔(rad/s)
w1=0:dw:2*pi*0.5*fs;         %建立正的离散圆频率向量
w2=-2*pi*(0.5*fs-df):dw:-dw; %建立负的离散圆频率向量
% w1=0:dw:2*pi*(0.5*fs-df);
% w2=2*pi*(0.5*fs-df):-dw:0;
w=;                   %将正负圆频率向量组合成一个向量
w=w.^it;                     %以积分次数为指数,建立圆频率变量向量
a=zeros(1,nfft);             %进行积分的频域变换
a(2:(nfft-1))=y(2:(nfft-1))./w(2:(nfft-1));
% if it==2
%   y=-a;                  %进行二次积分的相位变换,二次积分因为是-w^2,所以有y=-a
% else                         %进行一次积分的相位变换,一次积分时考虑到jw,把实部和虚部对换
% a1=imag(a);
% a2=real(a);
% y=a1-a2*i;
% end
y=-a;                        %进行二次积分的相位变换
a=zeros(1,nfft);
a(ni:na)=y(ni:na);         %消除指定正频带外的频率成分
a(nfft-na+1:nfft-ni+1)=y(nfft-na+1:nfft-ni+1); %消除指定负频带外的频率成分
y=ifft(a,nfft);            %IFFT变换
y=real(y(1:n))*c;            %取逆变换的实部n个元素并乘以单位变换系数为积分结果

%%
% subplot(3,1,2);            %绘制积分前的时程曲线图形
% plot(t,xx,'k-');
% xlabel('时间(s)');
% ylabel('加速度幅值(g)');
% title('图2 加速度时程曲线图');
% grid on;

subplot(3,1,3);            %绘制积分后的时程曲线图形
plot(t,y,'r-');
xlabel('时间(s)');
ylabel('位移幅值(mm)');
title('图3 位移时程曲线图');
grid on;
end求指导!

刘义红色枫叶 发表于 2014-7-17 16:34

大侠你好,加速度频域积分求位移我有点搞不定,想请你帮帮忙,可以吗?
http://forum.vibunion.com/thread-132936-1-1.html

lbtv 发表于 2014-7-24 09:54

往往很简单的东西,编程实现都比较难,主要是各种影响因素{:{33}:}

qingchen12398 发表于 2014-8-5 17:41

看看附件里的东西

qingchen12398 发表于 2014-8-6 09:44

为什么我看不到附件 好悲剧啊   

gumengyinyin 发表于 2015-2-4 17:02

songzy41 发表于 2007-7-2 17:36
楼主的程序是取自王济和胡晓编的 “MATLAB在振动信号处理中的应用”一书的程序5.5。细看一下程序,发现在圆 ...

您好,我是使用的加速度信号是离散的通过adams仿真出来的信号,从时域曲线看上去是有很多毛刺,没什么规律,把它用频域或时域积分后得到的加速度信号就变得比较光滑,时域积分可能是滤掉了一些高频成分,但是频域积分就不知道怎么回事了

star_cheney 发表于 2015-2-6 20:32

目测这是王济的那个程序

star_cheney 发表于 2015-3-8 10:16

本帖最后由 star_cheney 于 2015-3-8 11:05 编辑

还是有点小问题。

牛小贱 发表于 2015-3-8 16:15

star_cheney 发表于 2015-3-8 10:16
还是有点小问题。

请将具体问题及错误提示上传~

xiaofu85029 发表于 2015-5-28 11:21

新手看不到程序..

xiaofu85029 发表于 2015-5-28 11:44

有大牛能把加速度到速度,到位移的程序能发出来吗,新手看不到附件

zhendongxue 发表于 2015-6-19 16:12

songzy41 发表于 2007-7-2 18:44
在上程序中把it=2,便得到二次积分的结果,与楼主#5层的结果相符(见下图),不知楼主怎么认为“不OK”?
...

二次积分时是-w^2,所以逆完FFT后取实部,应该是y=real(y(1:n))*c,那一次积分求速度是jw,逆完后取虚,应该是y=imag(y(1:n))*c。请问这对不对?

king369369 发表于 2015-11-13 16:32

学习了,

勤奋的wwf 发表于 2015-11-22 10:46

我来试试
页: 1 2 3 4 [5] 6
查看完整版本: 帮忙调试一个振动信号频域积分的程序!