图像缩略图

LVM文件导入

version 3.12.0.0 (6.1 KB) by m·a·Hopcroft
将LabVIEW.LVM数据文件导入MATLAB
4.7
25评级

108下载

更新2017年10月02

视图版本历史

查看许可证

国家仪器公司的LabView软件有一个本地文件格式称为LabView测量文件(LVM,扩展名。LVM)。这个m文件,lvm_import。m,读取LVM文件并将数据导入MATLAB工作空间。lvm_import。m处理所有类型的基于文本的LVM文件,并返回特定的信息,如日期、时间、数据列名等。

引用作为

M. A. Hopcroft(2021)。LVM文件导入(//www.tatmou.com/matlabcentral/fileexchange/19913-lvm-file-import),matlab中央文件交换。检索到

意见及评分(49

阿巴斯Alili

马YAKOB

很好,但数据似乎不擅长,因为数据被为Exemple(00,000 23,204)编写,所以我有
00 000 23.
204年……
这里的问题是matlab采取','喜欢(去另一种情况),我不想考虑评论像一个列

大卫。Ferracin

Adrian Bogdzia

乔治·海伍德

本杰明Rinauto

Jean-Noel Saugy

雅各伯内特

正如它所说的那样。谢谢你让我的生活更轻松!

阿里Golabchi

工作好了!谢谢你!

杨烁

作品完美!干得好!

罗山塞巴斯蒂安

谢谢你。这在Matlab 2018上顺利工作。

海城李

Hi,有一个错误时导入一些.lvm文件:
错误使用textscan
无效的文件标识符。使用fopen生成一个有效的文件标识符。

lvm_import中的错误(第442行)
y_labels = textscan(linein,'%s','delimiter',text_delimiter);

findextrm_ver4出错(第11行)
d = lvm_import(filename(i).name);

你能努力吗?谢谢

Erikfeldmann.

优秀作品

本杰明Wadowski

谢谢你吨!立即解决了我的问题,一旦它被放在当前文件夹

迈克尔Molyneaux-Francis

请帮助!

当我做这个函数的时候,我得到了很多数据。更具体地说,“ans”给了我一个1 x 1的结构体。在那个1 x 1结构中,我有Segment1到Segment175。我很难画出答案。第1段。数据,ans.Segment2。数据、ans.Segment3.data……, ans.Segment175。将数据转换为ONE图。

Brian Oporto.

非常感谢你的附加功能。工作完美的r2013a

罗素安德鲁

伟大的工作,谢谢!

Stephen BOUISSOU

效果完美!
很多谢谢!

Ahmet Sahinoz.

使用我们在风洞测试中收集的LabVIEW数据文件,在Matlab R2014B中完美地工作。

由于男人. .

Lennart M.

杰弗里刘

很好的分享

TienPhat阮

维克多

你好

使用逗号小数分隔符时,如果使用逗号小数分隔符。我将线路439更改为454:

%创建格式化字符串,用于读取字符串形式的数据
fs = ' % s ';For i=2:numdatacols, fs = [fs ' %s'];结束% #好< AGROW >
%为注释字段再添加一列
Fs = [Fs ' %s'];
%读取列作为字符串
rawdata = textscan (fid, fs,“分隔符”,text_delimiter);
%将“”、“小数分隔符”转换为“”。“十进制分隔符
Rawdata = Cellfun(@(x)strep(x,',','。'),RawData,'统一输出',false);
%将字符串转回数字
rawdata = cellfun(@(x) str2double(x), rawdata, 'UniformOutput', false);

现在,该函数在不到10秒钟内而不是180秒加载LVM文件。也许你可以介绍这个修改。

免责声明:我只测试一个8,8mb的文件,只有一个片段的新代码。

m·a·Hopcroft

我看到一些人遇到了麻烦的人;请记住,如果您不发给我一个错误报告和一些示例数据,我无法修复任何内容...单击上面的作者名称以联系我或在.m文件中查找我的电子邮件。谢谢!

哈桑亚希尔

吉姆布朗

我能够成功运行此代码,但它不会返回任何数据。只有1x1结构,具有分段信息。没有“数据”字段。

m·a·Hopcroft

我已经上传了一个新版本,具有更多修复的逗号分隔文件和更好的整体性能。感谢@ Die-Kenny for Bug报告和测试和S. Danylenko建议。

Giacomo

我用这个代码为我的工作:非常有用,谢谢!

我试过你的修改:非常有效!

Sviatoslav Danylenko

你好,Hopcroft

如果需要,可以提高使用非点小数分隔符读取lvm文件的速度。它的速度几乎和点分隔的lvm文件一样快(速度差大约是0.01-0.03秒)。

您需要替换此行:
%处理不使用句点(又名“点”或“。”)作为小数点分隔符的情况
% (LVM版本2.0+)
如果~ strcmp (data.Decimal_Separator,“。”)
...
结尾

用这个:

如果~ strcmp (data.Decimal_Separator,“。”)
如果verbose> = 2,fprintf(1,'\ n(使用十进制分隔符“%s”)\ n',data.decimal_separator);结尾

valuesSource = fileread(文件名);
valuesSource = strrep(valuesSource(ftell(fid):end), data.Decimal_Separator,'.');
别的
valuesSource =支撑材;
结尾
%创建一个格式字符串,用于以数字形式读取数据
fs = ' % f ';For i=2:numdatacols, fs = [fs ' %f'];结束% #好< AGROW >
%为注释字段再添加一列
Fs = [Fs ' %s'];% #好< AGROW >
%从文件中读取数据
[rawdata,位置]= textscan (valuesSource、fs“分隔符”,text_delimiter);
%保存第一行注释为该段的注释
数据。(fieldnm)。评论= rawdata{大小(rawdata, 2)} {1};

如果~ strcmp (data.Decimal_Separator,“。”)
文件中的%修复位置
%我们替代一个字符,我们真正需要
额外的char我们将在下一行读取。我们用它来
函数feof()触发eof标志
fseek (fid,位置2,“咖啡”);
fscanf (fid, ' % c ');
结尾

对LVM_IMPORT的最佳问候和感谢,
Sviatoslav

Si14

Adnan

当我一周之前下载此文件时,它对我不起作用。我刚刚将电子邮件发送到作者,在回复中,我得到了非常快捷的解决方案。几个电子邮件交换后,最后他分类了问题

lvm_import(“Data07v2.LVM”);

导入data07v2.lvm:

???索引超过了矩阵的维度。

==> LVM_IMPORT in 164错误
val = v_in {1} {1};

为Labview教授9.0.1,NI范围3.6和Xp教授SP3。

谢谢你的时间,继续说下去。

干杯

Adnan

m·a·Hopcroft

@Omar:好点。LabView创建一个空的列与标签“X_Value”,即使没有X数据在文件中。最新版本的lvm_import忽略标签,如果文件中没有X数据。

奥马尔面

data.segent1.column_Labels中的第一个单元格始终是字符串'X_Value',无论LVM文件中是否存在时间列。这是预期的吗?

奥马尔面

我是说这是有意的吗?

andreas.

最新版本的驴妈妈导入工作完美地为我,现在的数据是双倍,而不是字符串。

再次感谢您的精彩演出!

m·a·Hopcroft

感谢所有的反馈。在lvvm文件中有一个bug,使用逗号作为十进制分隔符而不是句号,所以在使用逗号的文件中,数据被返回为字符串而不是数字,正如@Pedram和@Andreas所经历的。这已经在最新版本的驴妈妈导入修复。

andreas.

很好的计划!

@Pedram:我遇到了同样的问题,但我设法解决了。问题是,当您导入数据时,它是字符串的单元格结构。为了能够绘制数据,你需要将其转换为一个矢量,例如使用函数str2num。我使用以下命令行导入数据,并将其转换为一个双精度矢量:

measurmentData = lvm_import(文件名);
时间= measurmentData.Segment1.data (: 1);
时间= cellfun (@str2num、时间)

Pedram

我设法导入我的数据,但不知道如何绘制它们。任何想法?

m·a·Hopcroft

有几个人报告了数据无法导入的问题。这可能与LVM文件使用逗号作为小数分隔符而不是句号有关。这已经在最新版本的驴妈妈导入修复(也在NI LVM软件)。

肯尼斯

各位,

谢谢你的精彩*。m文件。不过我遇到了点麻烦,我想装*。lvm文件就像这个简短的4KB示例http://dl.dropbox.com/u/12840152/test18xy.lvm相当标准的2011年*。我猜是lvm文件。

I)当我使用v1.2驴妈妈导入文件,因为它是我得到相同的错误“Vepashka”以上为“错误在==>驴妈妈导入357
数据。(fieldnm).comment = Rawdata {numDatacols + 2} {1};“

ii)当我在第349行开始将“巩固到简单的阵列”部分中,只需保留第349行“data.data = rawdata”,那么我就可以完成导入

方法II的唯一问题是我的data.data结构是空的!随着我与硕士学位的努力,将非常感激任何帮助

谢谢,
Kenneth Rasmussen.

m·a·Hopcroft

注意:最新版本(v1.2)使用了Jo(2010年7月13日)的建议,与LVM文件中的“特殊”头文件相关。

代码中有两个错误,它们阻止了(可能更多)使用某些lvm文件。

一个是多个标签。将第178行更改为
v_in = textscan(条、“% * %年代”,“分隔符”,‘\ t’,‘空白’,”、“MultipleDelimsAsOne”1);

第二种是多行:在第237行检查额外的一行,但它应该更一般地跳过所有额外的空白行
---
例如,在我的LVM中,数据在第一个标头之后有两个制表符和两个额外的空行。
而(Isempty(Linein))
如果(Feof(FID)),返回;结尾;
条= fgetl (fid);
结尾;

Farzad Rafieian.

通知任何未来的参考这一页,更新的文件在2010年4月15日工作良好,我的问题上面提到。

Farzad Rafieian.

你好,

谢谢文件,但我的数据出现了以下错误消息:

>> lvm_import('data07v2.lvm');

导入data07v2.lvm:

???索引超过了矩阵的维度。

==> LVM_IMPORT in 164错误
val = v_in {1} {1};

你能在这方面帮助我吗?

Farzad Rafieian.

你好,

谢谢文件,但我的数据出现了以下错误消息:

>> lvm_import('data07v2.lvm');

导入data07v2.lvm:

???索引超过了矩阵的维度。

==> LVM_IMPORT in 164错误
val = v_in {1} {1};

你能在这方面帮助我吗?

Vepashka

我试图使用你的lvm_import.m将lvm文件导入matlab,这是从一些传感器获取的.im运行程序,但在每个运行我面临的问题中。
“???索引超过矩阵维度。

错误在==>驴妈妈导入357
数据。(fieldnm).comment = Rawdata {numDatacols + 2} {1};“
我该怎么办?需要一个帮助,plsss !

杰拉尔德Knebl

良好的编程性能。
我想建议的是让它与多重x文件兼容。
很好的工作

Sung Jin Kim

很好

MATLAB版本兼容性
创建R2015b
与任何版本兼容
平台兼容性
窗户 macOS Linux.

社区寻宝

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!