Hallo denny,
erstmal vielen Dank für deine Antwort klappt super.
Aber noch eine Frage.
Kann es sein das bei deinem Code nur die Spalten von dem letzten Cell-Array 1x11 addiert werden?
Hallo ich habe nur den Fehler korrigiert, das heißt nicht das ist die Logik deines Programms verändert habe.
Zitat:
Ich hatte eigentlich vor von jedem cell array nach dem Schema also von der dritten Spalte aus in vierer Schritten und von der fünften Spalte aus mit vierer Schritten die Spalten zu addieren.Wäre echt super wenn ich des auch noch irgendwie machen kann.Wie könnte ich des realisieren?
Gruß Mensch61
Wenn du alle Ergebnisse haben möchtest, dann muss die Ergebnisse ja irgendwie zwischen speichern, also z.B die Variable H als Cell vorinitialisieren und dann abspeichern.
Summieren der angesprochen Spalten tust du ja bereits, du musst nur aufpassen bei der letzten Spalte die ist nämlich leer, was bei Konvertierung zu Double NaNs erzeugt.
% ertsmal die Daten extrahieren
rawdatatmp = rawdata{i};
equal_size = unique(cellfun(@length, rawdatatmp));
iflength(equal_size)== 1
rawdatatmp = cat(2, rawdatatmp{:});
% Komma durch Punkt ersetzen
rawdatatmp = regexprep(rawdatatmp, ',', '.') ;
% [B, K]=size(rawdatatmp{i});
% jetzt die Spalten konvertieren:
M = str2double(rawdatatmp(:, 3:4:end-1));
N = str2double(rawdatatmp(:, 5:4:end-1));
% jetzt kannst du diese Spalten beliebig addieren
F = sum(M,2) ;
G = sum(N,2);
H{i} = [F,G];
else fprintf('in cell %d: Anzahl der Spalten ist nicht konsistent', i);
end
Hallo,
ich hätt noch ein kleines Problem was ich überhaupt nicht in Griff kriege.Meine Datei sieht jetzt bischen anders aus d.h in ihr fehlen jetzt einige Spalten.Ich bekomm jetzt immer den Fehler beheben konnt ich ihn bis jetzt aber nicht.Vielleicht kann mir dabei jemand helfen ihn zu beheben.Vielen Dank im Voraus.
Error using cellfun
Input #2 expected to be a cell array, was double instead.
Error in mehrereDaten (line 82)
equal_size = unique(cellfun(@length, rawdatatmp));
% ertsmal die Daten extrahieren
rawdatatmp = rawdata{i};
equal_size = unique(cellfun(@length, rawdatatmp));
iflength(equal_size)== 1
rawdatatmp = cat(2, rawdatatmp{:});
% Komma durch Punkt ersetzen
rawdatatmp = regexprep(rawdatatmp, ',', '.') ;
% jetzt die Spalten konvertieren:
M = str2double(rawdatatmp(:, 3:4:end-1));
N = str2double(rawdatatmp(:, 5:4:end-1));
% jetzt kannst du diese Spalten beliebig addieren
F = sum(M,2) ;
G = sum(N,2);
H = [-F,-G] ;
else fprintf('in cell %d: Anzahl der Spalten ist nicht konsistent', i);
end
for i=1:size(rawdata,1) % ertsmal die Daten extrahieren
rawdatatmp = rawdata{i};
ifisempty(rawdatatmp)% keine Daten
UW_P_Q_Data{i,1}= NaN; % = 0 oder NaN ??? else% Daten vorhanden, Summe berechnen
equal_size = unique(cellfun(@length, rawdatatmp));
iflength(equal_size)== 1
rawdatatmp = cat(2, rawdatatmp{:});
% Komma durch Punkt ersetzen
rawdatatmp = regexprep(rawdatatmp, ',', '.') ;
% jetzt die Spalten konvertieren:
M = str2double(rawdatatmp(:, 3:4:end-1));
N = str2double(rawdatatmp(:, 5:4:end-1));
% jetzt kannst du diese Spalten beliebig addieren
F = sum(M,2) ;
G = sum(N,2);
H = [-F,-G] ;
else fprintf('in cell %d: Anzahl der Spalten ist nicht konsistent', i);
end
Auch die Fehlermeldung ist eindeutig und auch logisch. Dein Index i läuft bis size(UW_P_Q_Data,1). Wenn du ein Element löschst, reduziert sich auch size(UW_P_Q_Data,1) und die Schleife will mit einem Index i auf eine Spalte zugreifen, die einfach nicht mehr da ist. Du müsstest hier entweder mit einer while Schleife arbeiten, oder aber einen anderen Index für den Zugriff auf
UW_P_Q_Data{...,1}
nutzen. Den for Schleifenzähler i kannst du nicht manipulieren. Es braucht daher einen separaten für den Zugriff.
Das ist aber mal wieder so ein Fehler, der wunderbar mit dem Debugger in einer schrittweisen Ausführen des Codes gefunden werden kann. Ich rate dir dringend den Umgang mit dem Debugger zu erlernen. Breakpoint vor die for Schleife setzten, dann mit F10 Schritt für Schritt weiter und entsprechend im Workspace nach den Variablen schauen.
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.