C程序从矩阵中读取一列数据

时间:2013-01-10 14:38:49

标签: c matlab

我有一个文本文件,如下所示:

a 1 2 3 4
b 5 6 7 8 
c 9 1 2 3
d 4 5 6 7

我需要C代码根据提供的输入从我的文本文件中读取一列。例如,如果我将1传递给C代码,我需要输出为第一列的1D数组:

1
5
9
4

如果我将3传递给代码,则输出第3列:

3
7
2
6

我使用coder.ref将输入传递给MATLAB的C代码。

2 个答案:

答案 0 :(得分:1)

我不会为你编写代码,所以这里有一些提示:

这里有几个选项,最简单的选择是:

从文件中读取所有数据,然后仅显示所需的列。

您可以使用temp = fgetc(FILE *stream)来浏览该文件 做点什么,

if(temp == ' ') j++;if(temp == '\n') i++;

i是行,j是矩阵的列。

最后,您需要一个函数将所有temp放在一起,并将您的字符串(字符数组)转换为整数。

答案 1 :(得分:0)

如果您使用的是Unix / Linux系统,则可以使用命令行工具(例如cut)预处理文件以提取列。

假设您的矩阵位于名为data.txt的文件中。然后,您可以执行以下操作:

% cat data.txt
a 1 2 3 4
b 5 6 7 8 
c 9 1 2 3
d 4 5 6 7


% cut -d " " -f 2 < data.txt
1
5
9
4

-d选项指定文本文件中列之间的分隔符。 -f指定要删除的列。您可以编写一个可以获取列号的shell脚本并为您运行cut