我试图从Octave文件中读取矩阵,但我找不到解决方案 . 输入文件是:
4 1 4 2 3 1 4 2 1 4 2 1 4 1 2 1 3
其中4是行数和列数 . 我希望能够将这些信息存储在一个矩阵中,并能够通过调用它们来使用它的元素,如 a(2,3) .
a(2,3)
您可以使用dlmread()函数:
data = dlmread(file,sep,r0,c0)从文本文件中读取矩阵数据,该文件使用数据值之间的分隔符sep . 如果未定义sep,则从文件本身确定字段之间的分隔符 . 给定两个标量参数r0和c0,它们定义了要读取的数据的起始行和列 . 这些值从零开始索引,使得第一行对应于零索引 .
所以你可以简单地使用单线:
data = dlmread('input_file', ' ', 1, 0);
通过调用 r0 设置为 1 的函数,您可以有效地跳过第一行,其中包含(现在无用的)行数 .
r0
1
您应该能够使用fscanf读入所有数据 . 然后,您可以提取第一个值以获取行数和列数,然后将剩余的数据重新整形为预期大小 .
fid = fopen('data.dat', 'r'); data = fscanf(fid, '%f'); nRows = data(1); data = reshape(data(2:end), nRows, nRows).'; %// 1 4 2 3 %// 1 4 2 1 %// 4 2 1 4 %// 1 2 1 3
然后,您可以像对待任何数组一样索引结果
data(2,3) %// 2
2 回答
您可以使用dlmread()函数:
所以你可以简单地使用单线:
通过调用
r0
设置为1
的函数,您可以有效地跳过第一行,其中包含(现在无用的)行数 .您应该能够使用fscanf读入所有数据 . 然后,您可以提取第一个值以获取行数和列数,然后将剩余的数据重新整形为预期大小 .
然后,您可以像对待任何数组一样索引结果