国家仪器公司的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中央文件交换。检索到。
很好,但数据似乎不擅长,因为数据被为Exemple(00,000 23,204)编写,所以我有
00 000 23.
204年……
这里的问题是matlab采取','喜欢(去另一种情况),我不想考虑评论像一个列
正如它所说的那样。谢谢你让我的生活更轻松!
工作好了!谢谢你!
作品完美!干得好!
谢谢你。这在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);
你能努力吗?谢谢
优秀作品
谢谢你吨!立即解决了我的问题,一旦它被放在当前文件夹
请帮助!
当我做这个函数的时候,我得到了很多数据。更具体地说,“ans”给了我一个1 x 1的结构体。在那个1 x 1结构中,我有Segment1到Segment175。我很难画出答案。第1段。数据,ans.Segment2。数据、ans.Segment3.data……, ans.Segment175。将数据转换为ONE图。
非常感谢你的附加功能。工作完美的r2013a
伟大的工作,谢谢!
效果完美!
很多谢谢!
使用我们在风洞测试中收集的LabVIEW数据文件,在Matlab R2014B中完美地工作。
由于男人. .
很好的分享
你好
使用逗号小数分隔符时,如果使用逗号小数分隔符。我将线路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文件中查找我的电子邮件。谢谢!
我能够成功运行此代码,但它不会返回任何数据。只有1x1结构,具有分段信息。没有“数据”字段。
我已经上传了一个新版本,具有更多修复的逗号分隔文件和更好的整体性能。感谢@ Die-Kenny for Bug报告和测试和S. 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
当我一周之前下载此文件时,它对我不起作用。我刚刚将电子邮件发送到作者,在回复中,我得到了非常快捷的解决方案。几个电子邮件交换后,最后他分类了问题
lvm_import(“Data07v2.LVM”);
导入data07v2.lvm:
???索引超过了矩阵的维度。
==> LVM_IMPORT in 164错误
val = v_in {1} {1};
为Labview教授9.0.1,NI范围3.6和Xp教授SP3。
谢谢你的时间,继续说下去。
干杯
@Omar:好点。LabView创建一个空的列与标签“X_Value”,即使没有X数据在文件中。最新版本的lvm_import忽略标签,如果文件中没有X数据。
data.segent1.column_Labels中的第一个单元格始终是字符串'X_Value',无论LVM文件中是否存在时间列。这是预期的吗?
我是说这是有意的吗?
最新版本的驴妈妈导入工作完美地为我,现在的数据是双倍,而不是字符串。
再次感谢您的精彩演出!
感谢所有的反馈。在lvvm文件中有一个bug,使用逗号作为十进制分隔符而不是句号,所以在使用逗号的文件中,数据被返回为字符串而不是数字,正如@Pedram和@Andreas所经历的。这已经在最新版本的驴妈妈导入修复。
很好的计划!
@Pedram:我遇到了同样的问题,但我设法解决了。问题是,当您导入数据时,它是字符串的单元格结构。为了能够绘制数据,你需要将其转换为一个矢量,例如使用函数str2num。我使用以下命令行导入数据,并将其转换为一个双精度矢量:
measurmentData = lvm_import(文件名);
时间= measurmentData.Segment1.data (: 1);
时间= cellfun (@str2num、时间)
我设法导入我的数据,但不知道如何绘制它们。任何想法?
有几个人报告了数据无法导入的问题。这可能与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.
注意:最新版本(v1.2)使用了Jo(2010年7月13日)的建议,与LVM文件中的“特殊”头文件相关。
代码中有两个错误,它们阻止了(可能更多)使用某些lvm文件。
一个是多个标签。将第178行更改为
v_in = textscan(条、“% * %年代”,“分隔符”,‘\ t’,‘空白’,”、“MultipleDelimsAsOne”1);
第二种是多行:在第237行检查额外的一行,但它应该更一般地跳过所有额外的空白行
---
例如,在我的LVM中,数据在第一个标头之后有两个制表符和两个额外的空行。
而(Isempty(Linein))
如果(Feof(FID)),返回;结尾;
条= fgetl (fid);
结尾;
通知任何未来的参考这一页,更新的文件在2010年4月15日工作良好,我的问题上面提到。
你好,
谢谢文件,但我的数据出现了以下错误消息:
>> lvm_import('data07v2.lvm');
导入data07v2.lvm:
???索引超过了矩阵的维度。
==> LVM_IMPORT in 164错误
val = v_in {1} {1};
你能在这方面帮助我吗?
你好,
谢谢文件,但我的数据出现了以下错误消息:
>> lvm_import('data07v2.lvm');
导入data07v2.lvm:
???索引超过了矩阵的维度。
==> LVM_IMPORT in 164错误
val = v_in {1} {1};
你能在这方面帮助我吗?
我试图使用你的lvm_import.m将lvm文件导入matlab,这是从一些传感器获取的.im运行程序,但在每个运行我面临的问题中。
“???索引超过矩阵维度。
错误在==>驴妈妈导入357
数据。(fieldnm).comment = Rawdata {numDatacols + 2} {1};“
我该怎么办?需要一个帮助,plsss !
良好的编程性能。
我想建议的是让它与多重x文件兼容。
很好的工作
很好