图片缩略图

edfRead

8.02版本2.10.0.1 (KB) 布雷特Shoelson
一个简单的文件阅读器对欧洲数据格式化(EDF)文件。

252下载

更新05年8月2020年

视图版本历史

查看许可协议

编者按:这个文件被选为MATLAB中央选择的

edfRead()功能在这个现在提供的正式提交信号处理工具箱R2020b。这个文件交换提交不再支持金宝app

欧洲数据格式文件读入MATLAB

(hdr记录]= edfread(帧)
从所有的记录文件读取的数据帧(“* .edf”)。在结构hdr头信息返回,返回的信号(波形)在结构上记录,与相关波形记录作为字段名为返回记录的数据结构。

注意:这个函金宝app数支持被弃用。请参阅:
https://blogs.mathworks.com/pick/2020/07/10/deprecating-金宝appsupport-for-edfread-and-edfreaduntildone/

[…]= edfread(帧,assignToVariables, assignToVariables)
触发编写单独的输出变量,定义的字段“标签”,到调用者的工作区中。
[…]= edfread(帧,targetSignals, targetSignals,…)
允许用户指定的名称或索引信号导入的子集。

请注意:我也上传文件交换EDFReadUntilDone。如果你有问题与EDFRead读取大型文件,请下载并试用一个!
格式规范:来源:http://www.edfplus.info/specs/edf.html

引用作为

布雷特Shoelson (2021)。edfRead(//www.tatmou.com/matlabcentral/fileexchange/31900-edfread), MATLAB中央文件交换。检索

评论和评级(204年)

布雷特Shoelson

@Jhon:提交不再支持。金宝app请在信号处理工具箱EDFRead的版本。
问候,
布雷特

乔恩格雷

@Brett Shoelson你能看一看吗?这里的问题是什么?
代码(hdr记录):= edfread (shhs2 - 200110. - edf);
错误:数组索引必须是正整数或逻辑值。

错误edfread(第163行)
hdr。标签{2}= regexprep(从文件中读(fid, 16日*字符)”、“\ W’,”);

文件链接:https://drive.google.com/file/d/1n3nquUufBjZIogKtXHhGc_fn-YUS67Rl/view?usp=sharing

布雷特Shoelson

@Shifa:我不确定。如果文件不是很大,你可以寄给我,我很乐意尝试读并找出发生了什么。如果这些是不正确的,你想做一个屏幕和我分享,我将试着帮助调试。让我知道。你可以直接给我发邮件:

char (cumsum ([98 -11 -12 -10 7 7 4 -47 45 -12 19 15 8 3 7 8 -69 53 12 2]))

欢呼,
布雷特

Shifa Somji

我试着给这条线断点和帧正是我期望它!它看起来像这条线:hdr。版本= str2double (char (fopen (fid, 8) '));导致一些错误,我不知道为什么。fid的值为21如果这很重要。

布雷特Shoelson

@Shifa:令人费解!你碰巧R2020b和信号处理工具箱?我想知道有一些冲突的版本添加到工具箱。否则:将一个观察点在第126行(?):[fid,味精]= fopen(帧,“r”);

看看什么是帧。然后确保该文件存在按您预期的那样。
布雷特

Shifa Somji

是的,我很确定我指的文件完整的文件名。我试着与其他文件,还得到一个无效的文件名错误

布雷特Shoelson

@Shifa……如果你得到一个无效的文件名错误,与edfRead很可能不是一个问题。你确定你的文件存在,在MATLAB路径或被称为一个完整的文件名?
布雷特

Shifa Somji

谢谢你这段代码布雷特。我试图运行[hdr,记录]= edfread(帧);并使用fopen越来越错误错误无效的文件名。错误edfread hdr(第142行)。版本= str2double (char (fopen (fid, 8) '));你知道怎么解决这个问题吗?

易卜拉欣岩石

您可以使用以下命令在python中转换edf csv
然后导入csv Matlab很容易:
进口pyedflib
进口熊猫
导入csv
f = pyedflib.EdfReader (“SC4001EC-Hypnogram.edf”)
注释= f.readAnnotations ()
张开(“Test.csv”、“w”):
d的范围(len(注释[0])):
fo.write (str(注释[0][d]) +”、“+ str(注释[1][d]) +”、“+注释[2][d] + ' \ n ')

ROHAN耆那教徒的

@Arlex,我也面临着同样的问题,你提到的。你的解决方案吗?我试着使用edfread和edfreadUntildone和许多其他包中提取hypnogram .edf文件但不能在任何地方获得睡眠阶段的信息,我是十进制的值。请帮我。
非常感谢

Tolga Ozkurt

布雷特Shoelson

@Arlex,
我想引导你这POTW博客主题:https://blogs.mathworks.com/pick/2020/07/10/deprecating-金宝appsupport-for-edfread-and-edfreaduntildone/
希望它会解决你的问题!
欢呼,
布雷特

Arlex马林

非常感谢布雷特。我从生理网问题加载一些EDF文件hypnogram数据库。据我所理解的值存储在这样EDF文件包含一组字母:[W, 1、2、3、4 R, M ?),当我试图加载这样的变量使用edfread我在“记录”获得正确的数量的样品,但不合理的数值。

我做错了什么?

提前谢谢。

怀亚特于

巨大的感谢。

niraj古普塔

诺阿Papera

你好,我用脑电图与EEGLAB导入一些EDF文件分析。EEGLAB无法正常阅读。所以我想把GDF EDF。有什么功能?

玛丽

@Brett Shoelson:谢谢你的回答。我调试代码和错误由于“NaN”数组。另一个问题,我使用了eyelink。剂量这段代码支持阅读eyeli金宝appnk“edf”文件?
玛丽

布雷特Shoelson

@Mary:不确定如果eye_tracker使用eyeLink,但是您的文件似乎并没有一个欧洲的数据格式(EDF)文件。2017年3月6日,请看到我的评论,下面。
布雷特

玛丽

你好,
我想读一个eye_tracker“edf”文件。我收到以下错误消息。你有什么建议吗?
“错误使用从文件中读
无效的大小
错误edfread(第225行)
tmpdata (recnum)。{二}=从文件中读数据(fid, hdr.samples (ii), int16) * scalefac (ii) + dc (ii);“

称詹

Amiya

saveEDF文件中有一个问题如果不同通道的采样率是不同的。第331行DATAout = cell2mat(数据);只会失败。知道如何解决吗?

阿比盖尔Frimpong

@Brett Shoelson

我有以下错误:无法识别的函数或变量edfreadUntilDone试图读取ecgca102时。从生理网edf文件。你能帮吗?

阿比盖尔Frimpong

@Brett,我是一个新手在Mathlab编码。我想读以下生理网文件:https://physionet.org/content/nifecgdb/1.0.0/ecgca986.edf
我在这个错误:文件:edfread。线:131列:18
“变长度输入宗量”之前似乎是作为一个函数或命令,冲突
和它的使用作为一个变量的名称。
这个错误的一个可能的原因是,你忘了初始化变量,或
你有初始化它隐式使用负载或eval。

我做错了什么?也可以请你告诉我应该如何运行您的代码?因为我的文件是一个非常大的文件,你能解释一下我应该如何实现EDFReadUntilDone吗?

之上Bogdanov

路易吉Pugliese

马修·英格拉姆

Seongyeop金

布雷特Shoelson

@Prateek:我们已经看到一些文件QRS信息,但不是.EDF.QRS。你能和我分享一个文件吗?
谢谢,
布雷特

Prateek辛格

@Brett
如何阅读.edf。qrs文件?

绒鸭佩雷拉

莎拉

@Brett,
我得到同样的错误消息是225行谢耳朵,下面。你有什么建议吗?
谢谢,
莎拉

剑张

之上Bogdanov

布雷特Shoelson

@Piotr,
请尝试EDFReadUntilDone,让我知道如果解决这个问题吗?
谢谢,
布雷特

彼得亚雷Bajtala

嗨,布雷特,
我有一个奇怪的问题,进口.edf数据。我进口45信号的记录没有错误,但有些信号(例如动脉血氧饱和度)只有ca。第一批样本的5%,其余的都是零。当我导入这个.edf文件通过Polyman软件,整个完整的显示信号。

Sadegh拉希米

布雷特感谢及时回复,我明白了!这是一个错误!

布雷特Shoelson

@Sadegh:键入“函数”这个词吗?
布雷特

Sadegh拉希米

布雷特感谢分享你的代码,但不幸的是,我不能运行它!有一个错误在第一行:

函数(hdr记录)= edfread (“TeLC34PTZ.edf”)

错误:文件:edfread。m: 1列:37
意想不到的MATLAB表达式。

我的文件的名称是TeLC34PTZ单个通道。我很抱歉如果我的问题是太初级,但我在MATLAB编程全新!
我试着用另一个edf文件从你的建议网站,http://www.physionet.org/,但结果是一样的。我怎么能解决问题呢?

最好的问候,
Sadegh

布雷特Shoelson

@John Kablan(和其他人):
谢谢你,约翰。备案,我努力变得更加活跃(“官方”)对该文件的支持。金宝app它被广泛使用,我没有必要带宽来解决一些用户共享的问题。希望很快!
谢谢,
布雷特

约翰Kablan

嗨布雷特,感谢分享您的代码。一个小的修正。在edfread。线238我添加以下过滤频率领域阅读时的一个子集的信号。
问候,
约翰

> > hdr.frequency = hdr.frequency (targetSignals);

马克Duntz

它也为注释工作吗?我看到它进口注释作为信号但我不知道如何解释结果。

Ruiyi田

@Brett Shoelson
你好,布雷特,156行我也遇到了问题。
数组索引必须是正整数或逻辑值。
错误edfread(第156行)
hdr。标签{2}= regexprep(从文件中读(fid, 16日*字符)”、“\ W’,”);
我注意到之前的行线是错误
hdr。ns = str2double(从文件中读(支撑材4 * char) ');
2 = 1:hdr.ns
似乎数组索引“二世”只能是整数?我不知道如果这是问题,因为我想用str2num替代str2double还有一个错误的下一行显示“引用不存在字段‘标签’。”
如果isempty (targetSignals)
targetSignals = 1:元素个数(hdr.label);
你知道我怎样才能解决这个问题呢?

宏源张

你好,Brett Shoelson,我最近用生理信号数据库名为MAHNOB .BDF的存储格式。我很幸运看到了matlab代码开发在互联网上,仔细研究和使用它,但是有一个非常严重的问题。在matlab的通道信号值记录是完全不同的信号在EDFbrowsers我打开。在EDFbrowsers,它是一个很好的心电图信号,在matlab和情节不符合规则。即可充电,我47渠道快速公车提供文件,一个文件是关于20万亿年,是因为大量的数据吗?或者您开发的代码转换函数都有自己的价值。因为我是一个新手,我分析你的代码找不到原因。请回答你的问题。

布雷特Shoelson

@Abraham,
对不起,我不明白你的问题。file.m是什么?“ecdca200您的数据文件。法国电力公司(edf)”,对吧?你的调用语法文件似乎是正确的。你是说你输入:

[头,recorddata] = edfread (“ecgca200.edf”);

和你得到一个“至少需要一个输入参数(文件名读)“错误呢?

这将是令人费解。
布雷特

约翰亚伯拉罕

嘿,布雷特,我继续这个错误,请帮助我。”“错误使用edfread(第119行)
EDFREAD:至少需要一个输入参数(文件名读取)。”“和我的其他文件命名文件。米,这就是字面上的“[头,recorddata] = edfread (“ecgca200.edf”);
header.label
%’Thorax_1‘Thorax_2 ' ' Abdomen_1 '
%’Abdomen_2‘Abdomen_3 ' ' EDFAnnotations '”“请帮助布雷特

布雷特Shoelson

@John:
默认情况下,EDFREAD应该阅读所有的信号。如果你只得到一个频道,也许有一些答:关于你的文件。如果你愿意与我分享,我将看一看。
问候,
布雷特

约翰典当

@Brett Shoelson
我已经输入数据的脑电图从CHB-MIT下载网站。
从26日的数据通道。
数据从1通道可以很容易地使用这个命令读取
请告诉,如果我想读所有渠道的数据同时使用一个EDF读命令吗?
谢谢

布雷特Shoelson

@Matthew:
有可能你和我共享一个数据文件吗?
谢谢,
布雷特

马修·毕格罗

嗨,@Brett Shoelson,
我有一个类似的问题的一些其他评论者。当我输入
(hdr, datastream数据)= edfreadUntilDone (13288010303 _003.edf)或在短格式

命令窗口告诉我:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
edf1 = edfread (“dkb.edf”)
(hdr记录]= edfreadUntilDone (“13288010303 _003.data”)
下标指标必须或者是真实的积极的整数或逻辑值。

错误edfreadUntilDone(第152行)
hdr。标签{2}= regexprep(从文件中读(fid, 16日*字符)”、“\ W’,”);
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
我确信我的数据是27通道脑电图和心电图数据约130万样品的2 400 hz。这是一个从epilepesia项目的样本数据。我不确定问题是它太大,数据价值超过一个小时。
你能帮我解决这个问题吗?提前谢谢你!

丹麦汗

@Vikramaditya请使用两个输出参数,调用edfread。

vikramaditya battina

我试图用edfreadUntilDone和edfread

当我得到执行“步骤1 2:阅读要求记录。(这可能需要几分钟。)…”和终止。

知道我为什么让这种奇怪的问题。

gaddam chandana

嗨,布雷特
我想阴谋的记录数据从[hdr, recorddata] = edfread(帧)
recorddata包含值在7到62000年翻倍。
请告诉我如何阴谋。
谢谢提前

Sania Zahan

嗨,布雷特

这工作很好。谢谢。

彭秦

嗨,布雷特。
我想知道我如何使用matlab edfread吗?我有下载这个zip,减压后,matlab的m文件打开是吗?我打开它后,我无法打开下载的edf文件matlab,建议我应该不是一个matlab的表达式。

谢尔登•张

嗨,布雷特。
我是谢耳朵张。
我得到Edfread。从你的MathWorks m。
我想改变edf垫,但我刚在Matlab。

当我输入“hdr = edfread (sz2 - 3. - edf)”
它显示是这样的:
步骤1的2:阅读要求记录。(这可能需要几分钟。)…

hdr =

版本:0
patientID:“VEEG0118N_1 M 07 - 9 - 2006 # # _ #”
recordID:“Startdate可以12 - jun - 2017 X X Compact_2x64ch '
startdate可以:“12.06.17”
开始时间:“04.37.36”
字节:29440
记录:2138
持续时间:1
ns: 114
而且电池标签:{1 x114 (ios}
而且细胞传感器:{1 x114 (ios}
而且细胞单位:{1 x114 (ios}
physicalMin而且双[1 x114 (ios):
physicalMax而且双[1 x114 (ios):
digitalMin而且双[1 x114 (ios):
digitalMax而且双[1 x114 (ios):
而且细胞预滤器:{1 x114 (ios}
样品(而且双1 x114 (ios):
频率(而且双1 x114 (ios):

一些变量如‘physicalMin’,‘digitalMin’,‘digitalMax’,“样本”和“频率”是“南”。
我不知道它如何发生。

如果我类型(hdr记录]= edfread (sz2 - 3. - edf);
它显示是这样的:

步骤1的2:阅读要求记录。(这可能需要几分钟。)…
错误使用从文件中读
无效的大小。

错误edfread(第225行)
tmpdata (recnum)。{二}=从文件中读数据(fid, hdr.samples (ii), int16) * scalefac (ii) + dc (ii);

似乎不能运行的代码。
这意味着错误的值的公式无法计算,因为上面的变量。

我会很感激如果你能给我一些建议!
非常感谢! ! !

谢尔登•张

布雷特Shoelson

@Sheldon:我没有看到你发来的电子邮件。你的问题是什么?
布雷特

谢尔登•张

@Brett:
我有一些问题的代码。我送你一个电子邮件。任何建议将不胜感激!
谢尔登•张

布雷特Shoelson

@Positron:我听起来像一个for循环。算出有多少频道你想情节,然后形状(m x n)的矩形阵列轴,你想把他们。然后循环,索引到通道/轴。在伪代码:

ax = gobject (nChannels, 1);
指数= 1:nChannels
斧子(指数)=次要情节(m, n,指数);
情节(channel_index)
结束

那么如果m x n很大,考虑调用expandAxes:
expandAxes (ax);

你将能够click-expand任何轴。(expandAxes也可用文件交换。)

问候,
布雷特

positron96

嗨,一个显示所有频道多个次要情节怎么样?

pranav库马尔

谢谢@brett
我将回到你如果我有一个疑问
再一次感谢您

布雷特Shoelson

@pranav:
第一个输出变量是头信息。(我写它,因为它是便宜的读头,如果这是你所需要的,您可以通过请求优化阅读单个输出。)在第二个输出参数返回的信号。举个例子:

(hdr,脑电图)= edfread (…);
情节(eeg (1:)

欢呼,
布雷特

pranav库马尔

如何画出信号在阅读数据
(一号门将,脑电图)= edfread (C: \用户桌面\ \ Pranav Kumar \脑电图数据\ SC4001E0-PSG.edf ');
(信号)= edfread (“C: \ \ Pranav Kumar \用户桌面\ \ SC4001E0-PSG脑电图数据。法国电力公司(edf)”、“assignToVariables”, x);
情节(一号门将,脑电图信号);
这是我的代码,我怎能阴谋

错误使用阴谋
没有版本属性的类。

错误eegxlsplot(16行)
情节(一号门将,脑电图信号);
谢谢你!

布雷特Shoelson

@Pranav:不知道如何帮助你。解压文件,确保它在你的MATLAB路径,并使用它所示的帮助。

pranav库马尔

请告诉我如何使用这个函数后下载的zip文件

阮哈利

嗨,@Brett Shoelson,
非常感谢你的帮助。但类似问题Marta Crisanti拦住了我。当我输入
(hdr, datastream数据)= edfread (“wy.edf”)
edf1 = edfread (“wy.edf”),
命令窗口告诉我:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
edf1 = edfread (“dkb.edf”)
下标指标必须或者是真实的积极的整数或逻辑值。

错误edfread(第163行)
hdr。标签{2}= regexprep(从文件中读(fid, 16日*字符)”、“\ W’,”);
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
我相信我的数据是10 - 20系统脑电图,不是眼睛链接文件。当我从互联网下载短.edf格式文件,它工作得很好,但是,当我使用我自己的法国电力公司,它不工作。我认为问题可能我.edf太大的脚本。我的脑电图持续一个多小时。
你能帮我解决这个问题吗?非常感谢!

易惟李

易惟李

嗨,布雷特,Vinit和《我也有类似的问题。你知道这可能会导致什么?

cypson丽娜

@Brett:嗨

我试着编译你的代码但任何这个错误:错误使用edfread(第120行)
EDFREAD:至少需要一个输入参数(文件名读取)。你能请帮我奥得河有人有一个想法。我想把法国电力公司(edf)文件到另一个Matlab文件(. m)。

德克Cysarz

你好,非常有用的代码,谢谢。
然而,调用者的工作空间中的所有变量分配信号的大小与最大的采样率。
一些小的改变是需要指定变量的大小根据各自的采样率:
239行:
记录= 0(元素个数(hdr.label) hdr.samples (1) * hdr.records);
应该被
2 = 1:hdr.ns
buf = sprintf (% d = 0的记录(hdr.samples (ii) * hdr。记录,1);',2);
eval (buf);
结束
252行:
记录(ctr recnum: ctr + hdr.samples (2) - 1) = tmpdata (jj) . data {2};
应该被
buf = sprintf(记录% d (ctr: ctr + hdr.samples (2) - 1) = tmpdata (jj) . data {2};”, recnum);
eval (buf);
265行:
eval ([' assignin(“来电”、“',hdr.label{2},“”,记录(ii,:))))
应该被
buf = sprintf (assignin(“来电”,“% s”,记录% d);“, hdr。标签{2},(二);
eval (buf);

这样一个独特的变量的函数保存每个信号的大小根据采样率(record1, record2,…)。

穆Ahmed Tungekar

你好,
谁能告诉我如何使用它。
谢谢。

Vinit沙

我认为,这个函数与加载大文件有问题。后一些据点,函数只是开始滴群零(或接近于零值,如0.004)。我得到这个问题通过加载1小时文件采样在250赫兹。

如果是这种情况,那么请内存高效的代码。

asc

你好,布雷特,为什么不从这个edf读者生理网匹配结果atm结果?有某种转换吗?

布雷特Shoelson

@John:
谢谢你的评价!不知道如何引导你;这是一个核心MATLAB操作。你要第一个100分?(vec (1:10 0))。最后一个吗?vec(端- 99:端())。等间距的吗?(vec(圆(linspace(1、长度(vec), 100)))。
欢呼,
布雷特

约翰典当

@Brett
嗨Brett ....
你的功能是很棒的工作
我工作从CHB-MIT脑电图记录数据
我用你的代码
我只是需要一点帮助,同时使用你的代码,我可以访问所选通道(共23频道我可以选择其中一个)。请告诉我代码或如何选择一些点(我的意思是总有921600点的每个通道我只想选择100年指出的那样,921600年)。等待你的回复
谢谢

布雷特Shoelson

@LILI:
你好珍妮花……谢谢你的注意。我无法访问你的数据。标题的注释字段结构,偶然吗?
布雷特

丽丽戴

布雷特,
十分感谢这个函数。然后,我有一个问题在我的法国电力公司(EDF)文件,有注释信息叫Hypnogram顶部,这个功能也将有助于注释转移到matlab ?
我的法国电力公司(EDF)文件链接在这里,https://sleepdata.org/altamira?slug=cfs&path=polysomnography/edfs/cfs visit5 edf&auto=——800002.。。你可以借我一下吗?
谢谢,
珍妮花

布雷特Shoelson

@Will:
谢谢你的评价!默认读语法EDF的只是一个解释规范。然而,我实现一个过滤器,允许您指定目标信号你要读的书。(有利于大文件,当你不需要所有的频道。)
欢呼,
布雷特

威廉·兰迪斯

布雷特,

首先,谢谢你这个函数!这是非常有用的在我的工作。你使用这个函数的任何过滤器,还是基于edf文件?

谢谢,

Oddur Bjarnason

亲爱的布雷特,
我一直试图从edf脑电图文件转换为matlab。

我试图用edfRead。这个函数调用
函数(hdr记录)= edfread (“aesa1.edf”)
但我得到以下错误信息:
错误:文件:edfread。m线:1列:34意想不到的MATLAB表达式。
我可以查看文件edfbrowser所以文件似乎好了。

我可以看到,在过去其他用户得到同样的错误消息,但我不能看到,你想出了一个解释。

你能帮我吗?

Oddur Bjarnason。

Shane Hesprich

谢谢你的很棒的解决方案!绝对超级简单办法EDF数据到matlab。

春燕他

布雷特Shoelson

重要的是:

请注意,这个读者对于“欧洲数据格式”文件,不是“Eyelink数据文件”。For the latter, try Eydrian's File Exchange entry:

//www.tatmou.com/matlabcentral/fileexchange/54925-uzh-edf-converter

欢呼,
布雷特

布雷特Shoelson

@Marta……从2016年3月15日,请在下面看到我的评论。是你的一个Eyelink文件吗?(我猜,如果你把一个断点之前的163行,在读取的行

hdr。ns = str2double(从文件中读(支撑材4 *字符)”)

你会发现hdr。ns = =南……对吧?

规范对法国电力公司和法国电力公司(EDF) +说文件应该包含的样本数量的位置。如果你得到nan那里,你可能有一个不当(Eyelink吗?这个函数)文件格式)。

布雷特

布雷特Shoelson

@Marta:
你好,玛尔塔。偶然你能给我一个样本测试文件你收到这个信息吗?
谢谢,
布雷特
(我的电子邮件在这个编码:

char (cumsum ([98 16 -13 15 0 -70 69 -11 7 -10 -12 7 4 1 -46 45 -12 19 15 8 3 7 8 -69 53 12 2]))

)

玛尔塔Crisanti

Bret你好,我工作在一些.edf文件和我不是messega我理解错误。

为了确保我的工作:edfread。m是在文件夹我在与我的数据相同的文件夹中。我添加了与目录的路径,所以我应该在阅读部分没有问题。类型的scan_001_256文件名。法国电力公司(edf)”,这是我给edfread在输入的字符串。

我得到这个错误信息:
“下标指标必须或者是真实的积极的整数或逻辑值。

错误edfread(第163行)
hdr。标签{2}= regexprep(从文件中读(fid, 16日*字符)”、“\ W”、“);

我试图改变文件名,摆脱“_”,但错误信息是相同的。

你可以帮我吗?

提前谢谢你,对不起,打扰你。

玛尔塔。

Aiva

谢谢你的解释。我理解的意思两个公式。的edf file has been read successfully by using the proposed program in Matlab and display these signals in the figure simultaneously.

布雷特Shoelson

@Aiva:
抱歉为延迟。EDF规范文件头应该报告表明,实际的最小和最大(范围)的生理信号被记录,随着数字min和max(范围)的转导信号由传感器头中指定的(也是),在指定的单位。这些公式只是生理的信号范围和规模转变他们“真正”的位置(相对于直流偏置)。
HTH,
布雷特

Aiva

你好,布雷特。你能帮我解释一下两个公式吗?第一个是“dc = hdr。physicalMax——scalefac。* hdr.digitalMax”;第二个是“tmpdata (recnum)。{二}=从文件中读数据(fid, hdr.samples (ii), int16) * scalefac (ii) +直流(ii)”。
此外,数字铅丹和数字最大的意义是什么?

肯尼金

部分标签失踪,但实际的数据完整。

Seb Olbrich

布雷特
谢谢你的函数!工作的声音。很高兴它加载多个edf-files从一个目录和安全记录下相应的名称。想我必须这么做,或者你已经有了一些代码可用?
不管怎样,谢谢你的函数。

布雷特Shoelson

@ Susanne:
看起来你修改我的代码,并这样做了。我从未使用过“法国电力公司(edf)”作为一个变量;不应该说:

(fid,味精)= fopen(帧,“r”);

帧是第一个输入参数在哪里?
布雷特

Susanne鲁斯

你好布雷特,你能请给我一个建议我为什么得到这个错误信息:“未定义的函数或变量的edf。

错误edfread(第123行)
(fid,味精)= fopen (edf, ' r ');。谢谢你,苏珊。

布雷特Shoelson

@SHARANABASAVARA:
这是一个路径问题,不是一个edfread问题。这表明,MATLAB找不到文件,你把它放在哪里。读pathtool doc, userpath目录,....
布雷特

SHARANABASAVARAJA BHEEMAREDDY


在保存函数edfread.m
我试图加载S002R02。法国电力公司(edf)文件使用
(hdr记录):= edfread (“S002R02.edf”);
但这给了我错误:
未定义的函数或变量“edfread”。
我从physionet.org下载数据
所以在这方面帮助我
谢谢你!

布雷特Shoelson

@Kaare,
文件损坏时MathWorks改变许可模型9月1。我有固定的,转发,请再试一次吗?
欢呼,
布雷特

布雷特Shoelson

注意:

答:一些文件numberOfFiles返回值1,导致edfread一个错误。在新版本中(9/12/2016),如果检测到这个问题叫edfread()自动尝试使用edfreadUntiDone重读文件()。

我没有一个违规文件,所以我很难繁殖,但我认为新的电话应该工作。如果有人遇到注意edfreadUntilDone()被称为,请让我的报告让我知道它工作(或没有)!

谢谢,
布雷特

kaare

当我下载它,edfread-file没有扩展。我怎么叫它?添加一个m并不能解决任何事情。

imu931

伟大的法国电力公司(EDF)注释解决方案。

伊布Chelvi

你好,我试图利用edfread读取edf样本数据,在工作区显示记录为1。当我使用swt函数输出近似n细节情节似乎并不是一个波,而是就像浓密的信号。谁能告诉我如何识别信号数据的数量以及如何分开单独…谢谢提前

布雷特Shoelson

@samhitha:
我同意Mahrukh……这听起来像一个路径的问题。每当你试图调用MATLAB功能,它在当前路径。(见医生的“目录”和“pathtool”以了解更多信息。)
布雷特

mahrukh贾米尔

干草samhitha,
你添加下载功能edfread matlab目录?我在做同样的错误。使用“添加到路径”选项然后试着运行它。

samhitha vadlamani

你好,当我尝试输入一个法国电力公司(edf)文件,弹出以下错误:“未定义的函数“edfread”“char类型的输入参数。“这我怎么纠正?
PS:我把文件名称在单引号使用matlab的R2013b版本。谢谢提前

mahrukh贾米尔

亲爱的布雷特,
谢谢你的回复。你能发送这个文件在我的电子邮件地址。
mahrukh.jamil@mail.mcgill.ca
我的数据可能有一些法国口音。这是导致读取数据记录的错误吗?

这条线应该是什么意思?我应该添加的代码吗?
char (cumsum ([98 16 -13 15 0 -70 69 -11 7 -10 -12 7 4 1 -46 45 -12 19 15 8 3 7 8 -69 53 12 2]))
谢谢你!
Mahrukh

布雷特Shoelson

@mahrukh:

出于某种原因,一些法国电力公司(edf)文件有一个答:numberOfRecords值1。这触发错误你收到我的读者。我有另一个版本(edfreadUntilDone),我将给你如果你直接给我发邮件:

char (cumsum ([98 16 -13 15 0 -70 69 -11 7 -10 -12 7 4 1 -46 45 -12 19 15 8 3 7 8 -69 53 12 2]))

问候,
布雷特

mahrukh贾米尔

你好,布雷特,
谢谢你的代码。它帮助我很多,我需要问你一个问题。我想读PSG整晚记录通过这段代码。数据记录的数量给我1的值。它意味着什么?为什么不知道吗?是因为它的大量的数据吗?

我试图给一个值为数据记录hdr.record = 10;在第196行(或任何其他值),它给我的数据。但可以通过itslef读取整个数据如何?我怎么能知道整个数据的持续时间。
谢谢你!
Mahrukh

睚珥维拉纽瓦

大家好!
我有打算要运行此脚本,但我有一些问题。我需要阅读和分析法国电力公司(edf)文件。有人能告诉我如何把我的数据在这个脚本中(具体线)?感谢你的帮助。

聪米

你好布雷特

我是一个新手,无法运行脚本。我把我的数据在第一行输入edfread (x.edf)如果我的文件名是x.edf ?我经常错误说1行、列34是不对的。你能告诉我怎么把我的数据?我读过别人的评论,但是找不到这个问题的答案。我需要把我的数据在特定的地方等电脑桌面吗?谢谢你分享这个脚本和您的支持。金宝app
萨西

皮埃尔。

@Brett。我注意到这个函数的另一个问题。法国电力公司(edf)文件中的标签和撇号(')不忠实地转换。撇号丢失在输出标签。

解决方案:实现# 1和# 2。

# 1。取代149年由以下行:
hdr。标签{2}= strtrim(从文件中读(fid, 16岁[1],' *字符'));
(老49行:hdr。{二}=regexprep(从文件中读(fid, 16日*字符)”、“\ W’,”);)

# 2。注释行194。
(旧194行:hdr。标签= regexprep (hdr.label,‘\ W’,”);

徐汉

玛利亚姆Zabihi

布雷特Shoelson

EDF文件@Matthias,你肯定是一个有效的“欧洲数据格式”文件,而不是一个Eyelink文件?(这个功能不支持Eyelink不同的不同的,专金宝app有的格式。)
布雷特

这张F

好的谢谢!
它仍然不工作,

我试着什么:
——只使用在命令窗口突击队:[hdr,记录]= edfread (03 s0458a.edf)
下载代码并输入文件名(单引号)

没有成功!这是什么我失踪的吗?

布雷特Shoelson

@Mattias:文件的名称需要在单引号。
布雷特

这张F

这就跟你问声好!
我需要使用它们之前定义hdr或记录?
我有一个简单的edf文件,我想读到matlab edfread但结果是什么:

> > edfread (03 s0458a.edf)
edfread (03 s0458a.edf)
|
错误:意想不到的MATLAB表达式。

你的意思是:
> > edfread (03 * s0458a.edf)
未定义的变量“s0458a”或“s0458a.edf”函数。

我真的不知道要做什么,我所有我想要的是读法国电力公司(edf)文件(s)到matlab…!
提前谢谢!

安阮

布雷特Shoelson

@Pierre,
非常感谢……很少我得到这样一个详细的错误报告,特别是没有一个,但提出两个解决方案!金宝搏官方网站:)我将在短期内解决这个问题。
最好的问候,
布雷特

皮埃尔。

当数组索引用于“targetSignals”,我认为这行信号的顺序的“记录”并不能跟随targetSignals的顺序。

例如,

targetSignals = (1 2 3);
(hdr记录]= edfread(帧,targetSignals, targetSignals);

然后第一行的“记录”的信号通道1而不是信号通道2。而hdr申请中的信息是根据targetSignals命令向量(见216 - 222行代码中)。

解决方案1

如果这不是故意的,这可以通过改变你的方式解决解析的数据(230 - 241行)。

kk = 1:长度(targetSignals)
2 = targetSignals(乐);
ctr = 1;
jj = 1: hdr.records
试一试
记录(ctr recnum: ctr + hdr.samples (2) - 1) = tmpdata (jj) . data {2};
结束
ctr = ctr + hdr.samples (ii);
结束
recnum = recnum + 1;
结束

解决方案2

这也可以解决解析数据后重新排序的列:

[~,印第安纳州]= (targetSignals)进行排序;
无序= 1:长度(targetSignals);
newInd(印第安纳州)=无序;
=记录(newInd:);

最好的,
皮埃尔

布雷特Shoelson

嗨,莱拉,
谢谢你的评价。
EDFRead不丢弃任何信息;你的努力改变的格式字符串date-reading几乎肯定会抵消read-perhaps灾难性的其他文件。我不推荐它。

如果你看一下规格,你会发现毫秒信息不是捕获的EDF格式;并没有多少的信息。

对不起。
布雷特

莱拉Ayoubian

非常感谢你共享这个文件。确实非常有用。我有一些评论,也许是为了改进现有代码。
1 -加载的时间开始时间在毫第二精度。到目前为止,它给了我们hh: mm: ss。
2 - edf文件大的时候出的内存。除非我切小块中的数据,这不是最好的方法,有办法选择我需要加载的数据多少?
谢谢

伊凡

@Brett
谢谢你的回复。我看到这段代码不能打开eyelink .edf文件。谢谢!

布雷特Shoelson

@Ivan:
“马特”,你说“Max”?和“片刻”,你说“Eyelink”?2015年9月18日,看到我的注意,如下。

伊凡

@Brett
嗨,你有固定的问题片刻.edf文件?马特,我处理同样的问题。非常感谢。

布雷特Shoelson

嗨,Zara,
谢谢你的评价。如果您的数据比可以在内存中,您可能会看到警告。两个建议:使用一个更大的电脑(64位),并尝试在只有部分的阅读文件。“targetSignals”变量,我帮助部分读取。(或者更确切地说,完全读取信号的一个子集)。
好运!
布雷特

zara mansoor

嗨,布雷特

我得到这个错误。
内存不足。为你的选择输入帮助记忆。

错误edfread(第224行)
记录= 0(元素个数(hdr.label) hdr.samples (1) * hdr.records);

Sumtimes我的代码运行但有时它显示了这个错误。你能请建议什么错了。

sonali jadhav

你好先生”
我努力在母胎ECG信号从生理网下载数据库。细阅读记录。但是,
步骤2的2:解析数据……
是没有得到执行。我无法画出信号。幼儿园帮助

Soumalya Sarkar

布雷特Shoelson

请注意,从EYELINK EDF文件不是“欧洲数据格式”文件,不支持和读者。金宝app对不起!

马克斯

@Brett
谢谢你这么快回复!只是你一个Eyelink文件通过邮件发送。
谢谢你的支持!金宝app
马克斯

布雷特Shoelson

@Max,
我认为(虽然我不是100%肯定),Eyelink EDF (Eyelink数据格式?)是他们的专有格式,与EDF(欧洲数据格式),这个读者的目的是。如果你愿意送我一个Eyelink文件,我将能够一眼看出如果是这样。
问候,
布雷特

马克斯

嗨,布雷特,
我得到同样的错误消息(见下文)杨一样(在2015年7月25日报道)。我也得到了edf文件从一个Eyelink眼睛跟踪系统。你能解决的问题吗?
提前谢谢,
马克斯

下标索引必须是
真正的正整数或
逻辑值。

错误edfread(第149行)
hdr。{二}=
regexprep(从文件中读(fid, 16日*字符)”、“\ W’,”);

哈里克里希纳vadisala

嗨,布雷特,
由于现在edfread()工作。
有没有像edfread函数。阅读从连续脑电图信号(10秒的时代。法国电力公司(edf) +格式)

提前谢谢。

哈里克里希纳vadisala

@brett
非常谢谢
我现在就试试这个版本之一。

哈里克里希纳vadisala

@brett
我使用R13a

布雷特Shoelson

@Hari,
我只是成功地读取文件你发送在R14a R14b, R15a,甚至在R15b预映。没有错误,非常快。

(hdr, datastream数据)= edfread (“r01.edf”);

我想知道如果你有一个腐败的版本edfread吗?你用的什么版本的MATLAB ?
布雷特

哈里克里希纳vadisala

@brett
实际上我是matlab初学者。
我从这个网站下载这个文件当你前面的评论中提到
http://www.physionet.org/physiobank/database/adfecgdb/r01.edf

谢谢提前

布雷特Shoelson

@Hari……你能给我一个文件,触发了错误呢?我会尽力找出发生了什么。(13号线是评论,不是吗?)
布雷特

哈里克里希纳vadisala

嗨,布雷特,
我想使用这个函数读取一个edf文件但是我得到以下错误
错误:文件:edfread。m: 13列:1
意想不到的MATLAB操作符。
即使我注释掉:同样的错误发生在13行。有什么我错过edf代码运行。
谢谢提前

Tran黄平君

你好布雷特
我有一个x。法国电力公司文件从epoc emotiv出口设备。然后我使用的代码
(hdr记录]= edfread (“x.edf”);
和它的返回结构“hdr”和“记录”,我理解波形存储在“记录”
你能告诉我我怎样才能画出信号吗?
提前谢谢你!

布雷特Shoelson

@Yang:
如果你愿意与我分享一个丢失引发这个错误,我很乐意看看。你可以联系我:

char (cumsum ([98 16 -13 15 0 -70 69 -11 7 -10 -12 7 4 1 -46 45 -12 19 15 8 3 7 8 -69 53 12 2]))

我没有你的电子邮件地址。
布雷特

杨谢

嗨,布雷特

我遇到的错误如下:
下标指标必须或者是真实的积极的整数或逻辑值。

错误edfread(第149行)
hdr。标签{2}= regexprep(从文件中读(fid, 32岁,*字符)”、“\ W’,”);

我和Eyelink EDF文件记录,眼球跟踪系统。

你有什么解决方案吗?

珍妮花

我是一半自己的脚本当我发现你的。它为我节省了大量的时间! !谢谢你!

丽贝卡盔状突起物

好了,抱歉为垃圾邮件:)好吧,你今天真让我高兴,只有公平的XD

布雷特Shoelson

@Rebecca:
:)谢谢…那使我的一天。我将作为一个五星级评级。

丽贝卡盔状突起物

哦,我的上帝布雷特。我想我真的爱上你了:P这救了我吨的时间!我的心其实跳过一拍当我看到信息就进入我的空间通道。一个词:才华横溢。

丽贝卡

朴智星

布雷特Shoelson

在MATLAB @Wendy:执行:

char (cumsum ([98 16 -13 15 0 -70 69 -11 7 -10 -12 7 4 1 -46 45 -12 19 15 8 3 7 8 -69 53 12 2]))

我看看你的文件,当我得到它。
问候,
布雷特

温迪·肖

我认为有可能是错的读者,这无关电极。脑电图剪辑负脉冲作为EDF出口。当同一剪辑现在是积极的。所有样本值的实际信号是反向的。它也可能是一个问题在出口从Neuroworks一步,但这是不可能的。请提供我你的电子邮件地址,我将送你图片的剪辑。

布雷特Shoelson

嗨,温迪,
我没有验证任何单个字段的记录——我只是读的数据(但愿)适当的位置。如果您的数据是反向的,我想知道一对电极是向后?如果你认为有问题的读者,我会很感激的如果你能给我一个数据样本,让我看一看。
最好的问候,
布雷特

温迪·肖

你好,我们有一些困惑关于极性输出值的记录。

1。刻板印象与事件相关电位等相关N200面临特定的处理似乎完全逆edfread信号中提取的

2。我们发送一个脉冲脑电图马克行为事件,而这些事件负变位NATUS / Neuroworks脑电图记录系统,但他们出现在完全相反的极性一旦edf的剪辑与edfread出口并提取。

我们的问题是,输出的正/负极性edfread验证吗?如果是这样的话,你能和我们分享吗?由于我们使用颅内电极的极性对神经活动有重要意义。

布雷特Shoelson

@Alexander,

你的文件是“腐败”,它包含一个无效的记录规范:

hdr。记录= 1;

法国电力公司(EDF) +规范州2.1.2节中:

10。数据记录的数量只能在记录期间1。一旦文件被关闭,必须输入正确的号码是已知的和。

我的代码使用这个值来读取数据。

(注意:我写了另一个版本,忽略了hdr。记录和读取数据在一个while循环,直到完成。我和亚历克斯共享代码,验证它正确地读取数据。如果别人遇到这个问题,希望我的“edfreadUntilDone”功能,请给我发邮件,我很高兴分享它。我也想知道如果任何人看到hdr。记录= = 1的问题,试图找出为什么。)

亚历山大Melamud

亲爱的布雷特Shoelson,

我试着用你的文件,这部分工作。它只打开消息头部分和没有看到数据。
我运行:
G1 = edfread (“sample1.edf”)

我得到:
步骤1的2:阅读要求记录。(这可能需要几分钟。)…

后:

G1 =

版本:0
patientID:“Bentz詹姆斯13.01.1964…”
recordID:“? ? ? ? ? ? ? ? ? ? ? ?e……”
startdate可以:“08.02.08”
开始时间:“22.42.36”
字节:4608
记录:1
持续时间:10
ns: 17
标签:{1}x17细胞
传感器:{1}x17细胞
单位:{1}x17细胞
physicalMin [1 x17双):
physicalMax [1 x17双):
digitalMin [1 x17双):
digitalMax [1 x17双):
预滤器:{1}x17细胞
样本(1 x17双):

你能帮助吗?
非常感谢

布雷特Shoelson

@bahareh:
这部分的代码应该运行敌我识别)(即指定多个输出。如果你要求返回的数据,而不只是头信息);或b)你通过可选的PV对:‘assignToVariables’,真的。

我写它,这样你就可以快速和廉价地捕获的标题信息如果这是你所需要的,或者你可以触发一个完整的数据提取。

欢呼,
布雷特

bahareh mastiani

亲爱的布雷特Shoelson
我用这个m。文件来读我的法国电力公司(EDF)。但在运行这个m文件。文件在我的空间有一些信息头不是关于相关数据(EEG信号)
并显示:

步骤1的2:阅读要求记录。(这可能需要几分钟。)…

ans = ....

好,但当你在m。文件也应该显示“
disp(“步骤2 2:解析数据…”);
但这部分代码似乎不会运行。

我应该做些什么来看到我的信号不仅仅是信息的内容的标题?

非常感谢

布雷特Shoelson

@Arathi:
如果你只需输入
> > data = edfread (“abc.edf”);
吗?
布雷特

阿拉希

有人能把代码来读取.edf文件。
我不能够理解它如何shud。说,文件名是abc。在matlab R2014a法国电力公司(edf),我怎么读?

布雷特Shoelson

@Olga和克拉克:
谢谢你报告这些问题;我想解决这些问题,转发一个新版本。你们要么你碰巧有一个功能和生殖edf的步骤,你可以和我分享吗?
提前谢谢,
布雷特

奥尔加

嗨布雷特!伟大的功能——很有帮助。但这就是我偶然发现在使用它加载edf脑电图数据从不同的脑电图数据采集系统。在至少有一个系统的情况下,你的函数没有读正确的采样频率,因此也产生了不正确的脑电图记录时间。如果你有兴趣,我很乐意送你EEG信号检查。

奥尔加

克拉克业务

嗨,布雷特,

谢谢你的这个文件。
我试图打开一个.edf文件,我有一个错误消息我不知道如何解释它:

下标指标必须或者是真实的积极的整数或逻辑值。

错误edfread(第149行)
hdr。标签{2}= regexprep(从文件中读(fid, 16日*字符)”、“\ W’,”);

你有一个想法的我可以修复它吗?

非常感谢
克拉克

Elisa

布雷特Shoelson

@Saleha:
[…]= edfread(帧,targetSignals, 4)

为你工作吗?
布雷特

SALEHA KHATUN

谢谢你这么好的文件阅读器。我有一个法国电力公司(EDF)文件,它有64个通道的数据,我的意思是hdr。标签有65列工作区。我想知道我如何使用这个函数只能提取4通道数据吗?提前谢谢。

布雷特Shoelson

@Dabira:
我不知道你的标记;我只是想提供一个edf-reading函数。你可能会有更多的运气physiology-centric新闻组问你问题。
欢呼,
布雷特

Dabira

我记录通过Emotiv eeg信号。我已经将edf垫,但是我怎么能确定我的标记在巨大的数据?有一个特定的列?

布雷特Shoelson

@Mahirah:对不起……我不明白你的问题。

Mahirah哈姆丹

嗨. .edf文件我能看懂,但是我想打开我的edf文件查看. .

凯西

问题解决了。不把“在edf文件名。

凯西

嗨,布雷特,

我想使用这个从生理网进口.edf文件,但我得到一个错误,说“未定义的函数或变量‘psgsleep’。”Right now I'm just typing edfread(psgsleep) in MATLAB to try and read the file. Is this correct?

尼莎Jangra

布雷特Shoelson

法,
一旦你与edfread读取文件,您可以修改毫升的价值。这是你的意思吗?(例如,hdr。记录= 1,)或者你想编辑edf文件本身吗?(对不起,我不能支持你在编辑edf文件。)金宝app
布雷特

Farhan Masood

是的你的读者工作正常。问题是我的文件,它有1 hdr.records价值。我只是想知道是否有可能改变这个值正确?

布雷特Shoelson

@Farhan:
我不确定这个问题是什么,法尔。EDFREAD只是一个读者。如果你探索的头与不同的环境/读者和头部的价值。记录不是1,这表明我的功能可能会有问题。但如果该文件中的值是1,那么读者是否正常工作。对吧?

@Dayanand:
听起来像一个复杂的信号处理和分类/机器学习问题。我建议你把你的具体问题(和你)CSSM或答案。

干杯!
布雷特

Farhan Masood

当我读到法国电力公司(edf)文件,我把从physionet.org没问题但当我读我自己的edf文件显示标题是这样的:
头=

版本:0
patientID [1 x80 char):
recordID [1 x80 char):
startdate可以:“09.11.13”
开始时间:“10.25.39”
字节:6400
记录:1
持续时间:1
ns: 24
标签:{1 x24细胞}
传感器:{1 x24细胞}
单位:{1 x24细胞}
physicalMin [1 x24双):
physicalMax [1 x24双):
digitalMin [1 x24双):
digitalMax [1 x24双):
预滤器:{1 x24细胞}
样本(1 x24双):

谁能建议我如何解决这个问题?我文件中的主要问题是,hdr的值。记录是1。我怎样才能解决这个问题呢?

Dayanand

我已经为脑电图信号edf文件。我的目标是给特定的签名(系统函数H (Z))为特定疾病。我将区分正常的病人使用DWT和叛逃病人脑电图。我需要一些你的帮助。我怎么能继续

Farhan Masood

布雷特伟大的工作。读完edf文件我想画我读信号数据。你能帮我吗?
我是新来的,任何帮助将不胜感激谢谢:)

托马斯

布雷特Shoelson

Foroogh,消息表明,阅读你想打开的文件不存在,或者你没有权限。你证实你指定了文件名和路径,如果必要正确吗?你能检查文件的权限吗?
布雷特

Foroogh R。

嗨。谢谢你分享这个。我以前读edf文件在Matlab的早期版本中,一切都很好。现在我得到这个错误(m的新版本。当然文件):
错误使用edfread(第117行)
没有这样的文件或目录

误差方差(19)行
(hdr记录]= edfread (adr);
你能告诉我什么是错误的? !

Romesh

齐夫

谢谢,

伟大的工作。
感谢你的帮助你救了我们天长地久。

再次感谢。

z

亚历山大

谢谢!

佩尔Krøgholt

辛迪

工作很好,谢谢布雷特!

辛迪

布雷特Shoelson

你好,
请注意,新版本(5/23/13)支持阅读指定的子集的信号。金宝app
问候,
布雷特

辛迪

嗨,布雷特,

我认为我得到的地方只有阅读必要的信息(而不是所有通道数据)到tmpdata。我不确定我得到从文件中读正确的语法,特别是跳过的论点。例如如果我只想要一个通道(即通道# k):

tmpdata (recnum)。{1}=从文件中读数据(fid, hdr.samples (k), int16, hdr.ns * 2) * scalefac (k) +直流(k);

这并不完全正确。我可能少了什么……

布雷特Shoelson

嗨,辛迪,

显然我少了什么……

如果你能与我分享一个文件,明确解释一下你想读(你想跳过),我将在看看能不能挖改善这种读者。

谢谢!
布雷特
char (cumsum ([98 16 -13 15 0 -70 69 -11 7 -10 -12 7 4 1 -46 45 -12 19 15 8 3 7 8 -69 53 12 2]))

辛迪

谢谢,非常方便。

正如之前的海报所言,如果你只有在特定的渠道,代码使用了大量的内存。

替换
2 = 1:hdr.ns

2 = 1:(1、3、7)

不工作的时候tmpdata正在生成的(使用从文件中读),也不降低矩阵的大小。我遇到内存问题:

= 0 (hdr记录。ns, hdr.samples (1) * hdr.records);

因为tmpdata已经占用了太多的内存空间。

任何想法克服这些问题呢?我想到从tmpdata删除无关紧要的渠道,但是语法有点困。帮助将不胜感激!

布雷特Shoelson

法,我以为这就是我所做的。如果我的回答是不清楚,或者如果我误解了你的问题,你可以发邮件给我一个更好的解释与EDFREAD你想做什么。
欢呼,
布雷特
char (cumsum ([98 16 -13 15 0 -70 69 -11 7 -10 -12 7 4 1 -46 45 -12 19 15 8 3 7 8 -69 53 12 2]))

布雷特感谢你的快速和清晰的反应。你能建议来读取的数据(e。g在短段特定的信号)。
谢谢

布雷特Shoelson

法,
数量的渠道(信号?)在第124行中指定:
hdr。ns = str2double(从文件中读(支撑材4 * char) ');

在随后的行(125128132…)的文件读取1:hdr.ns。如果你想,你可以修改这些调用读(例如)信号(1、3、5、6、7]通过改变的实例

2 = 1:hdr

2 = (1、3、7)

HTH,
布雷特

谢谢你的有用的代码。我想知道我可以使用edfread阅读具体渠道?我有巨大的文件的几个渠道和感兴趣的。评论MATLAB代码我不清楚。
谢谢

布雷特Shoelson

@Oleksandr (Ibraheem):
谢谢你的评论/意见。我写这个的目的是为了方便使用MATLAB分析数据存储在EDF格式。

我鼓励你去分享你EDFWrite函数,如果你写;创造能力是我工作之外的一些描述。,)

不过,我很好奇:你有什么理由出口EDF在你将数据带到MATLAB进行分析?与他们有什么需要,你可以做与MathWorks工具吗?(或者你只是想与non-MATLAB用户分享了吗?)

布雷特(MATLAB的家伙)

Oleksandr Makeyev

嗨,布雷特,
这是一个很好的功能,非常感谢制作和分享它!
遗憾地重复一个问题,但有一个之前已经问edfWrite(或edfSave)以任何机会吗?我想让自己一段时间如果可能的话。
再一次,谢谢你的工作!
问候,

Hisham Elmoaqet

谢谢布雷特。我发现这个问题。出于某种原因,我将文件下载到Matlab目录的文件有损坏在某种程度上,它比原来的不同页面。我只是Matlab函数的文本复制到一个空白的m文件在我的Matlab目录,所以我能够运行没有错误的函数。谢谢

布雷特Shoelson

Hisham,你会再次尝试下载功能和重试阅读文件,或者把你下载的文件寄给我。我想知道发生了什么。
谢谢,
布雷特
char (cumsum ([98 16 -13 15 0 -70 69 -11 7 -10 -12 7 4 1 -46 45 -12 19 15 8 3 7 8 -69 53 12 2]))

Hisham Elmoaqet

布雷特感谢你的快速回复。我用Matlab R2012a,我不知道问题在哪里。我试着r01基金。edf你推荐,但同样的事情发生。当我运行的文件我收到消息“Matlab意想不到的运营商”当我每一行注释掉之前的一切。我不做其他的编码比调用文件edfread (r01.edf)这是正确的吗?我也不认为第13行是注释(虽然似乎没有做任何代码)。我已经下载的文件直接edfread。所以有什么我错过什么?谢谢你的帮助。

布雷特Shoelson

Hisham, 13号线已经是一个评论,不是吗?你能告诉我你使用什么平台,什么版本的MATLAB ?你能下载一个信号从生理网并试着读吗?(例如:

http://www.physionet.org/physiobank/database/adfecgdb/r01.edf

)。

如果你能读到的信号,它会显示您的数据文件中有一些可能是有问题的。

谢谢,
布雷特

Hisham Elmoaqet

我想使用这个函数读取一个edf文件但是我得到以下错误
错误:文件:edfread。m: 13列:1
意想不到的MATLAB操作符。
即使我注释掉:同样的错误发生在13行。有什么我错过edf代码运行。

Ibraheem Al-Dhamari

谢谢你的分享。这将是伟大的,如果你让它两个方向通过增加导出功能(编写matlab变量edf)。
最好的问候!

Behnaz

Behnaz

约瑟夫岛

优秀的,时间是完美的我现在就需要它!

安德烈Shapkin

伟大的作品,谢谢。

函数[数据,头]= edfread(文件名)
%欧洲数据格式文件读入MATLAB

fid = fopen(文件名,“r”、“ieee-le”);
% PART1
hdr = char(从文件中读(支撑材,256,' uchar ') ');

header.ver = str2num (hdr (1:8));% 8 ascii:版本的数据格式(0)
头。patientID = char (hdr (9:88));% 80 ascii:当地病人识别
头。recordID = char (hdr(简报》));% 80 ascii:本地记录标识
header.startdate = char (hdr (169:176));% 8 ascii: startdate可以记录(通行)
头。开始时间= char (hdr (177:184));% 8 ascii:开始时间记录(hh.mm.ss)
头。长度= str2num (hdr (185:192));% 8 ascii:在头的字节数记录
保留= hdr (193:236);% (EDF + C) % 44 ascii:保留
头。记录= str2num (hdr (237:244));% 8 ascii:数量的数据记录(1如果未知)
头。时间= str2num (hdr (245:252));% 8 ascii:数据记录的持续时间,以秒为单位
头。渠道= str2num (hdr (253:256)); % 4 ascii:信号(ns)的数据记录

% % % %第二部分

header.label = cellstr (char(从文件中读(fid, [16, header.channels], '字符')'));% ns * 16 ascii: ns *标签(例如脑电图FpzCz或身体温度)
头。传感器= cellstr (char(从文件中读(fid,(80年,header.channels),“字符”)'));% ns * 80 ascii: ns *传感器类型(例如AgAgCl电极)
头。单位= cellstr (char(从文件中读(fid, [8 header.channels], '字符')'));% * 8 ns ascii: ns *物理维度(如紫外线或degreeC)
头。physmin = str2num (char(从文件中读(fid, [8 header.channels], '字符')'));% * 8 ns ascii: ns *物理最低(例如-500或34)
头。physmax = str2num (char(从文件中读(fid, [8 header.channels], '字符')'));% * 8 ns ascii: ns *物理最大(例如500年或40)
头。digimin = str2num (char(从文件中读(fid, [8 header.channels], '字符')'));% * 8 ns ascii: ns *数字最小(如-2048)
头。digimax = str2num (char(从文件中读(fid, [8 header.channels], '字符')'));% * 8 ns ascii: ns *最大数字(如2047)
头。prefilt = cellstr (char(从文件中读(fid,(80年,header.channels),“字符”)'));% ns * 80 ascii: ns *前置过滤(例如惠普:0.1 hz LP: 75 hz)
头。samplerate = str2num (char(从文件中读(fid, [8 header.channels], '字符')'));% * 8 ns ascii: ns * nr每个数据记录的样本
保留= char(从文件中读(fid, [32, header.channels], '字符')');% ns * 32 ascii: ns *保留

%数据读

Ch_data =从文件中读(fid, int16);

如果头。记录< 0,%数量的数据记录(1如果未知)
R = (header.duration * header.samplerate)总和;
header.records =修复(长度(Ch_data)。/ R);
结束

%重塑数据
[],Ch_data =重塑(Ch_data header.records);


%比例设置
科幻小说=(头。physmax - header.physmin) /(头。digimax - header.digimin);
dc =头。physmax——科幻小说。* header.digimax;

data =细胞(1、header.channels);
Rs = cumsum ([1;header.duration。* header.samplerate]);%的索引块数据- > Rs (k): Rs (k + 1) 1

k = 1: header.channels
数据{k} =重塑(Ch_data (Rs (k): Rs (k + 1) 1:), [], 1);
%规模数据
数据{k} = {k}。*科幻(k) + dc (k);
结束

% = cell2mat数据(数据);

MATLAB版本兼容性
创建R2011a
兼容任何释放
平台的兼容性
窗户 macOS Linux

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!