【发布时间】:2013-10-24 22:20:20
【问题描述】:
我正在尝试读取包含多个不同(但已知)大小的数组的文本文件。
我对这些文件有以下了解:
每个文件都有一个大小为 m x n 的矩阵,格式如下例所示:
[[0.05,0.15,0.25,0.35,0.0]
[0.05,0.1,0.15,0.2,0.25],
[0.05,0.1,0.15,0.2,0.25],
[0.05,0.1,0.5,0.6,0.1]]
后面是一个大小为 p x 1 的矩阵:
[3,3,4,5,5,5,5,6]
最后是一个标量(这里没有方括号)
3
我发现的最简单的方法如下:
- 从文本文件中去掉括号(使用比 MATLAB 更合适的语言!)
- 使用
data = importdata()读取文件。这会产生一个数组,最后两行包含 p x 1 矩阵和标量(由于矩阵大小之间的差异,有一些 NaN) - 拉出数据,
A = data(1:m, 1:n); b = data(m+1,1:p); c = data(m+2,1);
这看起来很笨重。我可以将二维矩阵(包括括号)复制并粘贴到 MATLAB 命令窗口中,并且 MATLAB 知道如何解析它。这让我觉得有一种更优雅的方法可以用一个 MATLAB 函数来做到这一点。
整个示例文本文件:
[[0.05,0.15,0.25,0.35,0.0],
[0.05,0.1,0.15,0.2,0.25],
[0.05,0.1,0.15,0.2,0.25],
[0.05,0.1,0.5,0.6,0.1]]
[3,3,4,5,5,5,5,6]
3
【问题讨论】:
-
你的第一行有 4 个元素;接下来的三个有五个。我在本地示例的第一行添加了 0.0。
-
您正在使用哪种“比 MATLAB 更合适的语言(用于文本处理)”?是否支持 MEX?
-
FWIW,要从 Matlab 中的字符串中去除
[、],可以使用:regexprep(str,'[\[\]]','')。另见strrep。
标签: matlab text text-files