Verfasst am: 26.04.2008, 13:03
Titel: cell auf Inhalt prüfen
Hi,
Wie kann ich eine celle prüfen ob diese leer ist bzw. NaN drin steht?
Mit isempty(cell) oder strcmp(cell,'NaN') hab ich es schon versucht, leider fkt. das nur für Matrizen.
In meinem Code gibt es zwei Stellen wo ich das beeinflussen könnte. Bei der Erzeugung der celle oder wenn diese fertig ist dann die Zeilen wo NaN drin ist löschen, das wäre vielleicht einfacher oder?
Die cell sieht dann so aus:
'A' 'B' NaN
'F' 'G' 1.2
'R' 'H' NaN
....
Wie kann ich die NaN Zeilen löschen?
oder bei der Entstehung:
Code:
for i=1:length(FOTvek)
FOTcell{i,1} = data(strcmp(FOTout,FOTvek(i)),1:6);
FOTdata=FOTcell{i,1}; %Daten eines FOT
% pro FOT nach RET gruppieren for r=1:length(RETvek)
FOTRETcell{i,r}=FOTdata(strcmp(FOTdata(:,5),RETvek(r)),1:6);
FOTRETdata=FOTRETcell{i,r};%Daten eines FOT und einer Maske
%wenn cell leer brauch sem schleife nicht laufen
%if(isnan(FOTRETdata)) % 'TREFFER'
%end % pro FOT-RET Kombi nach SEM gruppieren for j=1:length(MTvek)
FOTRETSEMcell{i,r,j}=FOTRETdata(strcmp(FOTRETdata(:,6),MTvek(j)),1:6);
CDMTcell{i,r,j}=FOTRETdata(strcmp(FOTRETdata(:,6),MTvek(j)),1);
end end end
for i=1:length(FOTvek)
FOTcell{i,1} = data(strcmp(FOTout,FOTvek(i)),1:6);
FOTdata=FOTcell{i,1}; %Daten eines FOT
% pro FOT nach RET gruppieren for r=1:length(RETvek)
FOTRETcell{i,r}=FOTdata(strcmp(FOTdata(:,5),RETvek(r)),1:6);
FOTRETdata=FOTRETcell{i,r};%Daten eines FOT und einer Maske
% wenn cell leer brauch sem schleife nicht laufen if ~isnan(FOTRETdata) % pro FOT-RET Kombi nach SEM gruppieren for j=1:length(MTvek)
FOTRETSEMcell{i,r,j}=FOTRETdata(strcmp(FOTRETdata(:,6),MTvek(j)),1:6);
CDMTcell{i,r,j}=FOTRETdata(strcmp(FOTRETdata(:,6),MTvek(j)),1);
end% for j=1... end% if end% for r=1... end% for i=1...
Beachte das '~' vor 'isnan' damit wird die for-Schleife ausgeführt, sobald das Cell NICHT leer ist.
Wenn du die Zeilen löschen möchtest, wenn alles fertig ist, dann geht das über folgenden Code:
Code:
idx = find(isnan(cell2mat({C{:,3}}))==0)% C{:,3} da die Einträge in der 3. Spalte relevant sind
C = [{C{idx,1}}; {C{idx,2}}; {C{idx,3}}]'; % Wenn es sich um ein *x3-Cell-Array handelt
for i=1:length(FOTvek)
FOTcell{i,1} = data(strcmp(FOTout,FOTvek(i)),1:6);
FOTdata=FOTcell{i,1}; %Daten eines FOT
% pro FOT nach RET gruppieren for r=1:length(RETvek)
FOTRETcell{i,r}=FOTdata(strcmp(FOTdata(:,5),RETvek(r)),1:6);
FOTRETdata=FOTRETcell{i,r};%Daten eines FOT und einer Maske
% wenn cell leer brauch sem schleife nicht laufen if ~isnan(FOTRETdata{1}) || ~isnan(FOTRETdata{2}) || % etc. (in den {} müssen dann die Indizies der Spalten stehen, die ein NaN enthalten könnten) % pro FOT-RET Kombi nach SEM gruppieren for j=1:length(MTvek)
FOTRETSEMcell{i,r,j}=FOTRETdata(strcmp(FOTRETdata(:,6),MTvek(j)),1:6);
CDMTcell{i,r,j}=FOTRETdata(strcmp(FOTRETdata(:,6),MTvek(j)),1);
end% for j=1... end% if end% for r=1... end% for i=1...
Der Fehler lag bei mir. Ich habe es an der falschen Programmstelle eingebaut.
Es funktioniert so wie du es vorgeschlagen hast.
Vielen Dank für Deine Hilfe!
VG
Einstellungen und Berechtigungen
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.