声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 20869|回复: 45

[综合] 利用LMS Test.lab或者matlab进行信号处理

  [复制链接]
发表于 2013-11-5 21:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
本帖最后由 luca_fr 于 2013-11-5 22:15 编辑

我获得了一组振动加速度实验数据(实验数据不是LMS Test.lab测出的,现在只是导入matlab中,mat格式),现在想进行实验数据处理,只知道大致的过程:滤波,去噪,平滑,加窗函数,FFT,自谱,互谱,但是不会具体操作?现在想导入软件LMS Test.lab进行这组数据信号的处理,可以实现吗?如何操作/
如果谁会在matlab中进行信号处理也可以教我一下,我也愿意学习。或者在软件LMS Test.lab处理,知道一下操作的步骤都可以?
希望会的人帮忙一下,估计好多人跟我遇到一样的问题,如何进行信号的处理。建议大家讨论一下!!!

PS:数据量庞大,仅附上前1024个数据,以供模拟用。如果需要在计算自谱,互谱时需要平均,有需要的再添加。关键还是学会方法。

signal.rar

7.81 KB, 下载次数: 64

点评

貌似是LMS Test.lab不能导入其他格式的,貌似是这样。只知道有一款国外的模态分析软件接受第三方数据格式  发表于 2013-11-12 21:37
回复
分享到:

使用道具 举报

发表于 2013-11-12 17:01 | 显示全部楼层
本帖最后由 江树空 于 2013-11-12 17:07 编辑

你是西工大的么?是的话咱俩校友!
1、如果你要用LMS处理的话,有一个方法就是你可以先通过LMS将你以前通过LMS采集的试验数据导出一组mat格式的时域数据,然后用matlab打开,将你要处理的试验数据在matlab的workspace里面替换并保存,然后再用LMS打开。不过此方法LMS只能进行简单的处理(如功率谱等),如果涉及到参考通道如互谱,FRF等则因为无法选择参考通道而无法处理;
2、不知道你要进行什么运算,关于LMS的内部算法鄙人还是比较了解的,因为我是从事声信号处理算法的,之前写的算法也都是拿LMS验证的,都能与之完全重合。如果你现在还需要matlab算法的话,我抽时间给你发过去

点评

可以的话专门开一个这方面的帖子介绍介绍自己编写的程序和验证过程,分享快乐嘛  发表于 2013-11-12 21:39

评分

1

查看全部评分

 楼主| 发表于 2013-11-13 09:47 | 显示全部楼层
本帖最后由 luca_fr 于 2013-11-13 10:20 编辑

学长好,
    试验是在623所做的,数据是mat格式的,包括试验件表面若干测点的加速度时域信号(每一通道数据量是31234396,采样频率64khz),试验件舱内的声压信号,现在我想对这些数据进行处理,具体想通过以下步骤,平滑,滤波,加窗,FFT,谱分析,自谱,互谱,相干,分析(自己对信号处理的了解罗列的),但具体在matlab中不会操作,还望指导一下。
    自己本想偷懒,想直接导入LMS.TEST进行数据处理,看来有点太天真了,呵呵,这两天看了一下,lms只支持自己的数据和通用格式unv,uff格式,顿时,我就不说了(好像据说,可以把mat数据转换成unv格式,通过matlab,这就不会了)。。。。你说的lms.test导出mat数据导入matlab,替换,然后保存,不太了解,还是保存成mat格式吗,那样lms.test就不能读取了呀。
    前面对数据处理了一下,也没有平滑、加窗等,但是峰值出现的位置跟实测试验件的固有频率完全不吻合,与virtual.lab模拟出的结果也差太多,所以想系统的处理一下数据(给你一组数据,具体如何一步步处理,得到想要的结果)。
    学长,如果你对信号处理比较了解,可以指导我一下,我觉得matlab处理信号必须得学会,我的QQ邮箱:605099813@qq.com。先谢谢了
发表于 2013-11-13 12:56 | 显示全部楼层
本帖最后由 江树空 于 2013-11-13 12:58 编辑
luca_fr 发表于 2013-11-13 09:47
学长好,。
    试验是在623所做的,数据是mat格式的,包括试验件表面若干测点的加速度时域信号 ...

LMS是可以读取.mat格式的数据的,不过他要求.mat内部的数据结构是它能识别的,简单说就是你得有先有LMS采集的任意时域数据,将这时域数据导出一组.mat格式的,然后用matlab打开,打开后数据基本为结构体类型,更改数据的一些属性,包括采样时间间隔,最重要是将yvalues中的数据替换,然后保存,再在LMS的navigate里面展开文件夹直至你的.mat数据,然后可以直接在拖放至前后图中进行简单的condition,也可以添加进inputbasket然后进行后处理。我今天没带个人电脑,明天我做个范例发你

评分

1

查看全部评分

发表于 2013-11-13 14:33 | 显示全部楼层
原来都是搞信号处理的校友
 楼主| 发表于 2013-11-13 14:53 | 显示全部楼层
江树空 发表于 2013-11-13 12:56
LMS是可以读取.mat格式的数据的,不过他要求.mat内部的数据结构是它能识别的,简单说就是你得有先有LMS采 ...

好的,谢谢。你不是说在lms.TEST中不能进行更多的后处理。所以你能不能同时跟我分享一下matlab处理信号的算法,想学会,以后就可以自己处理了。
 楼主| 发表于 2013-11-13 14:57 | 显示全部楼层
zhuguanwen 发表于 2013-11-13 14:33
原来都是搞信号处理的校友

嗯嗯。你也是搞信号处理的。。。matlab处理信号是一项大工程,每次试验都是软件自动处理,现在想学一下软件内部的算法,自己处理。
发表于 2013-11-13 22:59 | 显示全部楼层
本帖最后由 江树空 于 2013-11-13 23:02 编辑

替换数据范例程序如下(为什么这样写详见附件文档):
clear
clc
load('CH3.mat')
%先生成一个仿真信号
fs=2000;
T=1/fs;
L=5*fs;
t=(0:L-1)*T;
sig=sin(2*pi*500*t); %生成一个500Hz的正弦信号(要保证其是行向量)
%开始替换数据
n_1.x_values.increment=T;%替换采样时间间隔
n_1.x_values.number_of_values=L;%替换数据长度
n_1.y_values.values=sig;%替换信号
save('abcd.mat','n_1')

如何让Test.Lab读取mat数据.part1.rar

400 KB, 下载次数: 171

mat文件.rar

42.01 KB, 下载次数: 130

如何让Test.Lab读取mat数据.part2.rar

260.78 KB, 下载次数: 159

评分

1

查看全部评分

发表于 2013-11-13 23:14 | 显示全部楼层
luca_fr 发表于 2013-11-13 14:53
好的,谢谢。你不是说在lms.TEST中不能进行更多的后处理。所以你能不能同时跟我分享一下matlab处理信号的 ...

只要不涉及到参考通道如互谱、传函,其他的常用数据处理如自谱、滤波等还是能处理的。至于每一种处理方法也不是三两下能说清楚的,这个只能慢慢来了。其实只要掌握了matlab中FFT如何处理信号,其他的就都好说了。matlab中对数据FFT后如何能得到与LMS一致的频谱,这个有空再告诉你。
 楼主| 发表于 2013-11-14 22:05 | 显示全部楼层
本帖最后由 luca_fr 于 2013-11-14 22:07 编辑
江树空 发表于 2013-11-13 23:14
只要不涉及到参考通道如互谱、传函,其他的常用数据处理如自谱、滤波等还是能处理的。至于每一种处理方法 ...

    今天搞了一下,确实行了,这里的功率谱PSD应该就是自功率谱密度吧;不过只能求滤波,FFT,平均功率谱,对于处理完的数据如psd再导入matlab进行显示也是不方便,对于内部的函数算法还是不太了解,不清楚具体的算法(还是希望你有时间能教一下)。我添加了自己实测的数据,感觉处理的还是不好。对于我的这个时域加速度信号,经过FFT变化后,峰值还不是出现在固有频率处;还有自功率谱密度,除了解释峰值频率处的能量高外,还能解释其他东西吗?(疑问:对于实测加速度时域信号处理,难道仅仅只是反应结构在固有频率处出现峰值吗?还有其他可以解释的东西吗?除了能测振型,传函,参数识别外)。好多搞损伤识别,EMD,HHT,小波。。。
    我这里也有段对于不同类型,text数据导入lms.test进行处理的程序,跟你有异曲同工之处(这个是针对不同的lms.test类型进行替换)。

LMS.rar

870 Bytes, 下载次数: 79

发表于 2013-11-16 14:00 | 显示全部楼层
luca_fr 发表于 2013-11-14 22:05
今天搞了一下,确实行了,这里的功率谱PSD应该就是自功率谱密度吧;不过只能求滤波,FFT,平均功率谱, ...

首先你的最开始贴出的信号,我不知道是测什么得出的,再就是采样率你也没说,所以你上面提到的几个问题,我也无从解释。
今天我就简单说一下如何用matlab计算稳态信号的频谱(线性谱),自谱密度,其中包括如何加窗函数以及如何修正加窗后的影响。clear
clc
%生成仿真信号,用于下面的信号运算演示
fs=5000;
T=1/fs;
L=10*fs;
t=(0:L-1)*T;
x=sin(2*pi*300*t)+2*sin(2*pi*1000*t)+3;
% %开始替换数据
% load('CH3.mat')
% n_1.x_values.increment=T;%替换采样时间间隔
% n_1.x_values.number_of_values=L;%替换数据长度
% n_1.y_values.values=x;%替换信号
% save('abcde.mat','n_1')
%加窗
win=hann(L);    %这里选用汉宁窗,你可以使用任意窗函数
x1= x'.*win;    %加窗
%fft运算
X=fft(x1);
AX=abs(X/sum(win));   %幅值归一化并对加窗修正
%双边谱转单边谱
SAX(1)=AX(1);
SAX(2:L/2+1)=2*AX(2:L/2+1);
%计算频率轴
f=fs/2*linspace(0,1,L/2+1);
subplot(3,1,1)
plot(f,SAX)
axis([min(f) max(f) min(SAX) max(SAX)+0.5])
title('线性谱')
%计算功率谱密度
%1、周期图法
[pxx1,f1]=periodogram(x,win,L,fs);
pxx1(1)=pxx1(1);
pxx1(2:L/2+1)=2*pxx1(2:L/2+1);
subplot(3,1,2)
plot(f1,pxx1)
axis([min(f1) max(f1) min(pxx1) max(pxx1)+0.5])
title('周期图法-自谱密度')
%2、平均周期图法
nfft=5000;  %设置每一次变换长度
noverlap=2500;  %设置重叠点数
win1=hann(nfft);
[pxx2,f2]=pwelch(x,win1,noverlap,nfft,fs);
pxx2(1)=pxx2(1);
pxx2(2:nfft/2+1)=2*pxx2(2:nfft/2+1);
subplot(3,1,3)
plot(f2,pxx2)
axis([min(f2) max(f2) min(pxx2) max(pxx2)+0.5])
title('平均周期图法-自谱密度')

从计算结果来看与LMS结果完全吻合,实际上这组仿真信号也很简单,不用和LMS对比,也能知道结果的准确性
LMS平均周期图法自谱密度.jpg
LMS周期图法自谱密度.jpg
LMS线性谱.jpg
matlab计算结果.jpg

点评

赞成: 4.0
赞成: 4
  发表于 2014-8-13 14:49

评分

1

查看全部评分

 楼主| 发表于 2013-11-23 19:52 | 显示全部楼层
江树空 发表于 2013-11-16 14:00
首先你的最开始贴出的信号,我不知道是测什么得出的,再就是采样率你也没说,所以你上面提到的几个问题, ...

程序我都理解了,真心感谢学长。还有三点疑惑:
1.在谱平均处理中,变换长度及重叠点数,这两个参数与所选取的测试点数还有所关注的研究频率有何关系,我的采样频率是64KHz,所研究的频率范围为20-10000hz,采样时间30s,试问这里选取测试点数,变换长度,重叠点数,三个参数应该取多少合适?
2.对于加速度时域信号,进行Averaged FFT处理后,得到加速度频谱,如何求取加速度均方根值呢?是对加速度频谱对频率求积分?
3.对于问题2,在进行Averaged FFT处理时,选择peak我知道是得到峰值,选择rms呢,如何理解,是对一段频率求取的均方差吗?看到每一个频率还是对应一个值,这不太容易理解。对于lms。test均方差是如何计算的?还有纵坐标的单位是如何规定的?
回复 支持 1 反对 0

使用道具 举报

发表于 2013-11-23 22:54 | 显示全部楼层
本帖最后由 江树空 于 2013-11-23 23:14 编辑

1、变换长度决定你的频率分辨率,频率分辨率=采样率/变换长度;在平均谱处理技术中,重叠点数决定时间窗的滑动距离(想想STFT的原理你就明白了),进而决定你可以平均多少次;至于如何取变换长度和重叠点数呢,首先要看你的分析信号有多长,看其能否满足你的分析需要,我一般喜欢使频率分辨率为1Hz,因此变换长度等于采样率,如果信号够长,重叠点数为0,如果信号不够长,那就得适当增加重叠点数,重叠点数越多,平均次数也越多,当然计算量就增大了,计算速度变慢。如你所说的信号有30秒,变换长度=fs,就算重叠率为0,也能平均30次,足够了。1.1信号1秒都不到,只好牺牲频率分辨率,变换长度取采样率一半(nfft=fs/2),重叠率(overlap)尽量大一点,overlap=75%就能平均5次,尽量不要小于75%;
1.2信号长度若大于1秒但不是大太多,变换长度取采样率(nfft=fs),重叠率适当选取即可;
1.3信号长度若远大于1秒,变换长度取采样率(nfft=fs),重叠率为0。
如果不是特殊分析情况,我一般习惯按以上三种情况设置变换长度和重叠长度,尽量保证能至少平均5次。
2、第二点你说的我不知道你说的是不是全频段的的均方根值(因为谱的表达形式有多种,就是每一个频点都有peak或rms两种表达,对于功率谱,peak是rms的两倍)。如果是说全频段的均方根值的话,加速度信号也好,声信号也罢,其计算方法都跟全频段求总声压级的方法一样,进行能量叠加即可;
3、你说的第三点,应该就是上面第二点中我括号里说的,对与功率谱,直流分量的peak和rms是相等的,其余频点peak是rms的2倍;对于幅值谱,直流分量的peak和rms是相等的,其余频点peak是rms的sqrt(2)倍。至于纵坐标单位,那看你进行的什么计算,幅值谱当然是你的分析的时域信号的单位(pa、m/s^2、V等等);功率谱是分析的时域信号的单位的平方;功率谱密度是分析的时域信号的单位的平方/Hz,等等

评分

1

查看全部评分

发表于 2014-4-4 02:22 | 显示全部楼层
我也在找这个东西
发表于 2014-4-15 20:18 | 显示全部楼层
学习了,信号处理很有意思
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-27 19:47 , Processed in 0.103961 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表