0

我首先设置了系统

[old_path]=which('rdsamp');if(~isempty(old_path)) rmpath(old_path(1:end-8)); end
wfdb_url='http://physionet.org/physiotools/matlab/wfdb-app-matlab/wfdb-app-toolbox-0-9-3.zip';
[filestr,status] = urlwrite(wfdb_url,'wfdb-app-toolbox-0-9-3.zip');
unzip('wfdb-app-toolbox-0-9-3.zip');
cd mcode
addpath(pwd);savepath

我正在尝试从Physionet读取数据库。我已通过以下方式成功到达一个数据库mitdb

[tm,sig]=rdsamp('mitdb/100',1)

但我想通过以下方式访问数据库ptbdb失败

[tm,sig]=rdsamp('ptbdb/100',1)

并得到错误

Warning: Could not get signal information. Attempting to read signal without buffering. 
> In rdsamp at 107 
Error: Cannot convert to double: 
init: can't open header for record ptbdb/100
Error using rdsamp (line 145)
Java exception occurred:
java.lang.NumberFormatException: Cannot convert
    at org.physionet.wfdb.Wfdbexec.execToDoubleArray(Unknown Source)

第一条错误消息指的是rdsamp.m中的这些行:

if(isempty(N))
    [siginfo,~]=wfdbdesc(recordName);
    if(~isempty(siginfo))
        N=siginfo(1).LengthSamples;
    else
        warning('Could not get signal information. Attempting to read signal without buffering.')
    end
end

此行为if(~isempty(siginfo))false 表示siginfo为空,即没有信号。为什么?我认为无法访问数据库。我认为其他错误随之而来。所以错误必须从这一行开始

[siginfo,~]=wfdbdesc(recordName);

括号中的蛇是什么意思?

Matlab 如何从 ptbdb 获取数据?

所以

这个错误是否意味着无法建立与数据库的连接? 或者 数据库中不存在这样的数据?

很高兴知道如何检查您是否像 Postrgres 那样连接到数据库。调试起来会容易得多。

4

2 回答 2

1

如果你运行physionetdb("ptdb",1)它会将文件下载到你的计算机上。然后,您将能够在<current-dir>/ptdb/

来源:physionetdb 函数文档。您对 DoBatchDownload 参数感兴趣。

下载后,我相信工具箱中的每个命令都会在从服务器获取文件之前检查您是否在本地拥有文件(只要您为函数提供本地文件的正确路径)。

于 2016-04-18T23:53:50.743 回答
0

问题是数据库ptbdb中不存在数据单元“100” 。

使用 100Mb 有线宽带等待 35 分钟后,我终于成功运行:

db_list = physionetdb('ptbdb')

并最终得到不完整的数据给病人 54 - 应该有 294 名病人。

'ptbdb/patient001/s0014lre' 'ptbdb/patient001/s0014lre' ... cut ...

主要开发者,Ikaro 的回答让我等了这么久:

The WFDB Toolbox connects to PhysioNet's file server. The databases
accessible through the WFDB Toolbox are not SQL database, they consist
of flat files. The error message that you are getting regarding the
ptdb/100 database is because you are attempting to get a record that
does not exist on the database.

有关 PhysioNet 中特定数据库或记录的更多信息,请键入:

帮助 physionetdb

physionetdb('ptdb')

这个平面文件系统确实是系统中的一个瓶颈。现在是改用 SQL 的好时机。

于 2013-10-15T19:15:29.897 回答