声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1953|回复: 15

bin 数据文件如何用matlab 分析 Z24 桥的数据

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

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

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

x

Z24桥是在模态分析领域一座古老的桥梁了,相信大家对它都很熟悉。
最近在做模态自动识别的东西,想用这个数据检验一下我的程序,但是
从ARTeMIS下载的Z24 桥的数据是bin文件,我不知道怎么打开。。。。
有没有高人知道,怎么弄?

在ARTeMIS的网站上可以下载:
new.svibs.com/download/examples.htm
回复
分享到:

使用道具 举报

 楼主| 发表于 2014-4-22 16:02 | 显示全部楼层
westrongmc 发表于 2014-4-21 20:05
参考 ARTeMIS Extractor online help

The SVS Binary Data File FormatThe SVS binary[/bac ...

谢谢,晚上有事情做啦~
发表于 2014-4-23 11:21 | 显示全部楼层
哈哈,有意思。











yserp.org/sitemap.html
 楼主| 发表于 2014-4-23 13:34 | 显示全部楼层
westrongmc 发表于 2014-4-21 20:05
参考 ARTeMIS Extractor online help

The SVS Binary Data File FormatThe SVS binary[/bac ...

我发现第2组有349425个数据,第5组有294827个数据
其他7个组都是360344个数据。

叶锡均的博士论文里面讲,每组的通道数目为33.(第二组32个,第五组27个)
采样频率为33.33Hz,时间长度为655秒

可是,我读出的数据有两个问题,
第一,数据量没有他说的多
第二,数据的数量级都是e-40

我是在matlab 里面采用下面的语句读的数据

fip=fopen('C:\Doucments and Settings\Administrator\桌面\Z24\Measurements1.bin','rb');
[a,num]=fread(fip,'double');

 楼主| 发表于 2014-4-23 13:34 | 显示全部楼层
本帖最后由 zjusml 于 2014-4-23 13:36 编辑
westrongmc 发表于 2014-4-21 20:05
参考 ARTeMIS Extractor online help

The SVS Binary Data File FormatThe SVS binary[/bac ...

我发现第2组有349425个数据,第5组有294827个数据
其他7个组都是360344个数据。

叶锡均的博士论文里面讲,每组的通道数目为33.(第二组32个,第五组27个)
采样频率为33.33Hz,时间长度为655秒

可是,我读出的数据有两个问题,
第一,数据量没有他说的多
第二,数据的数量级都是e-40

我是在 matlab 里面采用下面的语句读的数据

fip = fopen ('C:\Doucments and Settings\Administrator\桌面\Z24\Measurements1.bin','rb');
[a,num]=fread(fip,'double');

有相同经历的人,给我些指点吧,多交流

点评

为什么不看数据格式说明?!!  发表于 2014-4-23 14:00
 楼主| 发表于 2014-4-23 13:37 | 显示全部楼层

你做过这个没,知道的话,指点一下啊
 楼主| 发表于 2014-4-23 14:03 | 显示全部楼层
发现问题了,数据读取的时候,精度设置错误了
[a,num]= fread (fip,[21839,33],'float');
之后,数据就变为720687个了,我们将数据分成33组(第二,第5组除外)

第1组数据第1通道加速度数据.jpg
 楼主| 发表于 2014-4-23 14:15 | 显示全部楼层
westrongmc 发表于 2014-4-21 20:05
参考 ARTeMIS Extractor online help

The SVS Binary Data File FormatThe SVS binary[/bac ...

我不太明白如何分别将
每通道的采用数目、通道编号、每个通道的采样数据分别读取
因为我不知道这个数据里面哪些代表采用数目、通道编号、采用数据
我采用统一格式,float读出来之后是这样的。只发现前两个数据是e-40数据量级。其他都是正常的加速度量级
我觉得数据还没完全读取正确,请指正


第1组数据.jpg
发表于 2014-4-23 14:31 | 显示全部楼层
本帖最后由 westrongmc 于 2014-4-23 14:34 编辑
zjusml 发表于 2014-4-23 13:34
我发现第2组有349425个数据,第5组有294827个数据
其他7个组都是360344个数据。

呵呵,为什么不看懂数据格式说明?
这个二进制文件的数据存储格式是这样的:
1. 首先按照 long integer 格式存储每个通道的共有多少个样本点数量;
2. 再按照 long integer 格式存储共有多少个通道数量;
3. 然后,按照 float 格式存储第1通道的测量结果,
            再存第2通道的测量结果,
                   再存第3通道的测量结果,
                        。。。
                          依次进行下去,直到存储完毕全部通道。

因此,按照上述的数据格式依次读出就可以了。

以下程序可能有点罗嗦,仅为示意:
  • dataPath = '????';
  • filename = [dataPath, 'Measurement1.bin'];
  • fh1 = fopen(filename);
  • samplesNumPerChannel = fread(fh1,1,'int32'); % =21839
  • channelNum = fread(fh1,1,'int32'); % = 33
  • data_channel1 = fread(fh1,samplesNumPerChannel,'float32'); % the 1st channel
  • data_channel2 = fread(fh1,samplesNumPerChannel,'float32'); % the 2nd channel
  • ....
接下来不用写了吧?

至于采样频率的信息,看ARTeMIS的对应这个数据的cfg文件。
T = 3.0e-2;%采样间隔(采样周期)
因此:
samplingFreq = 1/T  = 33.3333333333 (Hz)

 楼主| 发表于 2014-4-23 14:46 | 显示全部楼层
westrongmc 发表于 2014-4-23 14:31
呵呵,为什么不看懂数据格式说明?
这个二进制文件的数据存储格式是这样的:
1. 首先按照 long integer ...

还有一个问题是。
比如第一组数据吧,一共720687个数据
第一个数据代表每个通道存储的数据个数,为21839
第二个数据代表一共有的通道数目,33
这样剩下的数据就只有720685个,如何平均分配给33个通道?因为少了两个数据

点评

不是720687,是720689。前2个是每通道样本点数、通道数目。剩下的720687/33=21839  发表于 2014-4-23 15:00
发表于 2014-4-23 14:54 | 显示全部楼层
zjusml 发表于 2014-4-23 14:46
还有一个问题是。
比如第一组数据吧,一共720687个数据
第一个数据代表每个通道存储的数据个数,为2183 ...

z24 - Measurement1

z24 - Measurement1

 楼主| 发表于 2014-4-23 15:12 | 显示全部楼层

非常感谢!
知道哪里出问题了
我不该按照这样的数组读取数据[21839,33]
 楼主| 发表于 2014-4-23 15:26 | 显示全部楼层
最后把修正的程序粘贴上来

程序.jpg
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-12-24 00:07 , Processed in 0.087384 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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