使用.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写入更多数量的零也会产生相同的错误。
答案 0 :(得分:1)
你是对的:问题是这一行试图将第2列到第10列写入'meas'的一个元素。
您应该写meas(j,:) = ...
而不是meas(j) = ...
meas(j,:)相当于meas(1,1:10)。
如果你写meas(j) = [1 2]
,你试图将2个元素写入一个不可能的meas元素。
请注意这段代码,你的csvread应该总是返回10个值!