在 MATLAB 中导入 CSV 文件

发布于 2024-12-28 10:46:58 字数 367 浏览 4 评论 0原文

如何将 CSV 文件导入 MATLAB?我正在使用的文件中的一行如下所示:

SUNW,2-Jan-98,1998,5,40.125,41.5

有 36 列和 10107 行。第一行包含列标题。 MATLAB 似乎不支持导入此类 CSV 文件。使用以下 textscan 函数将整个数据读取到一个元胞数组中。

data = textscan(fid, '%s %s %d %d %f %f', ...
    'HeaderLines',1, 'Delimiter',',', 'CollectOutput',1);

有没有办法可以将每列的数据读入不同的变量?

How can I import a CSV file into MATLAB?. A row in the file i am working with looks like:

SUNW,2-Jan-98,1998,5,40.125,41.5

There are 36 columns and 10107 rows. The first row contains the column headers. It seems that MATLAB doesn't support importing such kind of CSV files. Using the following textscanfunction reads the whole data into one cell array.

data = textscan(fid, '%s %s %d %d %f %f', ...
    'HeaderLines',1, 'Delimiter',',', 'CollectOutput',1);

Is there a way I could read the data into different variable for each column?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我们只是彼此的过ke 2025-01-04 10:46:58

textscan 文档中的示例 6 似乎涵盖您感兴趣的用例:

使用文本编辑器创建一个逗号分隔的文件 data2.csv
包含行

<前><代码> abc, 2, NA, 3, 4
// 在这里评论
定义、NA、5、6、7

指定textscan应将输入视为注释或空
值:

 fid = fopen('data2.csv');
    C = textscan(fid, '%s %n %n %n %n', '分隔符', ',', ...
                 'treatAsEmpty', {'NA', 'na'}, ...
                 'commentStyle', '//');
    fclose(fid);

textscan 返回一个 1×5 元胞数组 C,其中包含以下单元格:

 C{1} = {'abc'; '定义'}
    C{2} = [2;南]
    C{3} = [NaN; 5]
    C{4} = [3; 6]
    C{5} = [4; 7]

虽然它没有显式地将每一列分配给单独的变量,但您可以轻松执行类似 col1 = C{1};.

Example 6 in the textscan documentation seems to cover the use case that you're interested in:

Using a text editor, create a comma-delimited file data2.csv that
contains the lines

    abc, 2, NA, 3, 4
    // Comment Here
    def, na, 5, 6, 7

Designate the input that textscan should treat as comments or empty
values:

    fid = fopen('data2.csv');
    C = textscan(fid, '%s %n %n %n %n', 'delimiter', ',', ...
                 'treatAsEmpty', {'NA', 'na'}, ...
                 'commentStyle', '//');
    fclose(fid);

textscan returns a 1-by-5 cell array C with the following cells:

    C{1} = {'abc'; 'def'}
    C{2} = [2; NaN]
    C{3} = [NaN; 5]
    C{4} = [3; 6]
    C{5} = [4; 7]

While it doesn't explicitly assign each column to a separate variable, you can easily do something like col1 = C{1};.

陪我终i 2025-01-04 10:46:58

如果您有 MATLAB 2011b,则可以使用电子表格导入工具

If you have MATLAB 2011b then you can use the spreadsheet import tool.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文