【问题标题】:Writing rows/columns from .csv to matrix using Matlab使用 Matlab 将 .csv 中的行/列写入矩阵
【发布时间】:2016-06-02 12:26:09
【问题描述】:

使用 .csv 文件,我试图从 .csv 文件中读取一组行,然后将每一行写入一个矩阵。

发生错误,指出:

 'Index exceeds matrix dimensions.'
 Error in Id_Vg (line 17)
        meas(j,:) = csvread(filename,0,0,[row 2 row+j 5]);

此行试图将第 2 到 10 列写入“meas”的一个元素是否存在问题?

我认为用零预分配“meas”将允许将每个单独的 .csv 列和行写入“meas”。

function [ output_args ] = Id_Vg(filename, row,...
                             nopoints, noskip);

%directory= address of the .csv files "C:\....."
%filename = .csv name "1us.csv"
%row      = starting row to ignore all text before values, "120"
%nopoints = number of measurement points at each condition "[1e1 1e3 1e1 1e3 1e2]"
%noskip   = determines whether to skip condition "[0 1 0 1 0]" 0=skip.

rowstop = row+sum(nopoints);
M = csvread(filename,row,1,[row 2 rowstop 5]);

meas = zeros(sum(nopoints),4); 

    for i = 1:length(nopoints)
        if noskip(i) == 0
            for j=1:sum(nopoints)
        meas(j,:) = csvread(filename,0,0,[row 2 row+j 5]);
            end
        end
    end

编辑:将“meas(j)”更改为“meas(j,:)”并更改了有用的 .csv 列,因此不会将空列写入“meas”。

错误依旧:

Subscripted assignment dimension mismatch.

我知道这通常是由于在这种情况下,将太多 .csv 列写入没有足够列的矩阵。情况并非如此,因为即使向 meas 写入更多数量的零也会产生相同的错误。

【问题讨论】:

  • 如果 csvread 在每行读取 10 个值,那么您应该写:meas(j,:) = ...
  • 发生同样的错误,但谢谢。这应该有助于将 .csv 列写入“meas”。可能这与我在原始评论中提到的问题不同。

标签: matlab csv matrix


【解决方案1】:

你是对的:问题在于这一行试图将第 2 到 10 列写入 'meas' 的一个元素中。

你应该写meas(j,:) = ...而不是meas(j) = ...

meas(j,:) 等价于 meas(1,1:10)。

如果你写meas(j) = [1 2],你试图将2个元素写入一个meas元素,这是不可能的。

小心这段代码,你的 csvread 应该总是返回 10 个值!

【讨论】:

  • 不幸的是,即使考虑您的最后一条语句,它似乎也存在尺寸不匹配。该帖子已根据您的建议进行了编辑,谢谢。
  • Obchardon,您还有什么建议吗?
  • 我也认为您的参数在 csvread 中是错误的:因为当您编写时:csvread(filename,0,0,[row 2 row+j 5]); 这意味着您在不止一行上获得了一些价值!不应该是csvread(filename,0,0,[j 2 j 5]);`?因此,您仅读取了 4 个值的 ONE 行!或csvread(filename,0,0,[row+j 2 row+j 5]);
  • 确实如此!我错过了那个,谢谢。尽管如此,不幸的是“下标分配维度不匹配”错误仍然存​​在......
  • 现在你的代码是正确的,但我不知道你的数据是如何构成的,我帮不了你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-04
  • 2016-01-26
  • 2011-04-08
  • 1970-01-01
  • 2011-06-01
  • 2021-11-16
相关资源
最近更新 更多