Mit einer CSV-Datei versuche ich, eine Reihe von Zeilen aus einer CSV-Datei zu lesen und dann jede Zeile in eine Matrix zu schreiben.Schreiben von Zeilen/Spalten von .csv in Matrix mit Matlab
Ein Fehler tritt auf, dass heißt es:
'Index exceeds matrix dimensions.'
Error in Id_Vg (line 17)
meas(j,:) = csvread(filename,0,0,[row 2 row+j 5]);
Ist das Problem, dass diese Zeile Spalten 2 bis 10 in ein Element zu schreiben versucht, von ‚mess‘?
Ich dachte, dass die Vorbelegung von "meas" mit Nullen jede einzelne CSV-Spalte und Zeile in 'meas' schreiben könnte.
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
Edit: Changed 'mess (j)' auf 'mess (j, :) und die nützlichen CSV-Spalten verändert, so dass keine leeren Spalten 'mess' geschrieben werden.
Fehler immer noch auftritt:
Subscripted assignment dimension mismatch.
Ich verstehe dies in der Regel auf Grund, in diesem Fall zu viele CSV-Spalten zu einer Matrix zu schreiben, die nicht genügend Spalten enthält. Dies sollte nicht der Fall sein, da selbst das Schreiben einer höheren Anzahl von Nullen zum Messen den gleichen Fehler erzeugt.
Wenn csvread 10 Werte in jeder Zeile liest, dann sollten Sie schreiben: 'meas (j, :) = ...'. – obchardon
Derselbe Fehler tritt auf, aber danke. Dies sollte helfen, die .csv-Spalten in 'meas' zu schreiben. Möglicherweise ist es ein anderes Thema als das, was ich im ursprünglichen Kommentar erwähnt habe. – Azaxa