Ich habe einen Datensatz, der aus 24 Datensätzen in zeitlicher Reihenfolge in aufeinanderfolgenden Zeilen besteht. Was ich habe diesen Code zu zeigen, wo die Indizes sind:Matlab Daten löschen, wenn der Prozentsatz NaN zu hoch ist
%Re calculate the batch indices due to deletion
indbatch =1;
for it=2:size(Data,1)
if Data(it,2)<Data(it-1,2)
indbatch=[indbatch,it];
end
end
indbatch=[indbatch,it+1]; %gives the ind of start of each batch
ich, wenn der Anteil der fehlenden Daten zu sehen versuche (NaN) Werte in jeder Charge zu hoch ist, um den Stapel zu löschen. Zur Vereinfachung werden die ersten Chargen aus den Reihen 1: 250 und dann die zweite Chargenreihe 251: 510. Also ich möchte wissen, wie man die Schleife zu berechnen, um den prozentualen Anteil von NaN in jeder Charge zu berechnen, wenn der Prozentsatz größer als 80% ist Batch-Nummer in Reihenfolge löschen Dies ist, was ich bisher habe, aber dies funktioniert nicht aufgrund der Ind Bit ich denke, und auch der Anteil Bit verwendet nur Länge und sollte Zeile * Länge verwenden ...
for ib=1:length(indbatch)-1 %each batch (24 batches)
tspan=[indbatch(ib):indbatch(ib+1)-1]; % gives the time span of each batch
for iv = 1:49
Ind = find(isnan(Data(tspan,iv)));
Check = isempty(Ind);
if Check == 1
continue
else
Percentage_Missing = (length(Ind)/ length(Data)) * 100;
if Percentage_Missing >= 80
Delete = [Delete, iv];
else
continue
end
end
end
end
Willkommen bei SO. Können Sie uns einen [MCVE] (http://stackoverflow.com/help/mcve) geben, vor allem für einige Testdaten, um Ihr Problem besser zu verstehen. –