使用Matlab将.csv中的行/列写入矩阵

时间:2016-06-02 12:26:09

标签: matlab csv matrix

使用.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写入更多数量的零也会产生相同的错误。

1 个答案:

答案 0 :(得分:1)

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

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

meas(j,:)相当于meas(1,1:10)。

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

请注意这段代码,你的csvread应该总是返回10个值!