WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Messwerte-Ausreißer in Fläche glätten

 

Idefix_1024
Forum-Century

Forum-Century


Beiträge: 230
Anmeldedatum: 16.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.03.2009, 10:07     Titel: Messwerte-Ausreißer in Fläche glätten
  Antworten mit Zitat      
ich habe z.B. folgende Fläche

Code:

x   = [1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4];
y   = [1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4];
z   = [1.9 1.8 2.4 2.7 2.9 5 3.1 2.9 2.8 2.7 2.2 1.9 1.8 2.4 2.7 2.8];

delta   = 0.1;
rangeX  = 1:delta:4;
rangeY  = 1:delta:4;

[X,Y]   = meshgrid(rangeX,rangeY);
Z       = griddata(x,y,z,X,Y,'cubic');
surf(X,Y,Z)
shading interp
view(-45,60)
zlim([0 6])
set(gca, 'CLim', [min(zlim), max(zlim)]);
colorbar
 


wie würdet Ihr diesen Pickel in der Fläche entfernen, der durch den Ausreißer (die 5 im z-Vektor) verursacht wird?

Sollte mir niemand einen einfachen Weg aufzeigen können, so werde ich eben ein Programm schreiben müssen, dass den Ausreißer findet, löscht und anschließend mit einem bicubischen-Spline die Stelle interpoliert...

das wird aber eine Weile dauern...
gibt es einen einfacheren weg?
Private Nachricht senden Benutzer-Profile anzeigen


Idefix_1024
Themenstarter

Forum-Century

Forum-Century


Beiträge: 230
Anmeldedatum: 16.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.03.2009, 14:47     Titel:
  Antworten mit Zitat      
hat sich erledigt.

war gar nicht soo viel Aufwand das mal zu programmieren...
Private Nachricht senden Benutzer-Profile anzeigen
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 06.03.2009, 14:57     Titel:
  Antworten mit Zitat      
Hallo Idefix,

stelle doch gern auch Deine Lösung vor, damit folgende "Generationen" davon profitieren können!

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Idefix_1024
Themenstarter

Forum-Century

Forum-Century


Beiträge: 230
Anmeldedatum: 16.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.03.2009, 15:11     Titel:
  Antworten mit Zitat      
kein Problem...

hier mein gesamter Code, der das Verfahren schön demonstriert

leider hab ich im Moment keine Zeit für genauere Beschreibungen des Codes aber ich denke der erklärt sich wenn man Zeile für Zeile anschaut

Code:

x   = [1   2   3   4   1   2 3   4   1   2   3   4   1   2   3   4];
y   = [1   1   1   1   2   2 2   2   3   3   3   3   4   4   4   4];
z   = [1.9 1.8 2.4 2.7 2.9 5 3.1 2.9 2.8 2.7 2.2 1.9 1.8 2.4 2.7 2.8];

delta   = 0.1;
rangeX  = 1:delta:4;
rangeY  = 1:delta:4;
[X,Y]   = meshgrid(rangeX,rangeY);
n       = length(x);
z_griddata  = griddata(x,y,z,X,Y,'cubic');
z_matrix    = [ 1.9 1.8 2.4 2.7;...
                2.9 5.0 3.1 2.9;...
                2.8 2.7   2.2   1.9;...
                1.8 2.4 2.7 2.8];
[n_y n_x]   = size(z_matrix);
z_interp2   = interp2([1:1:n_x],1:1:n_y,z_matrix,X,Y,'cubic');

locate = [geomean(z) harmmean(z) mean(z) median(z) trimmean(z,25)];
     
%      
% band        = 0.35;
% Id_null     = find(Id0 <= band2 & Id0 >= -band2);
% Idq_sqrt3   = find((Id0./Iq0 >= sqrt(3)*(1-band)) & (Id0./Iq0 <= sqrt(3)*(1+band)));
% Iqd_sqrt3   = find((Id0./Iq0 <= -sqrt(3)*(1-band)) & (Id0./Iq0 >= -sqrt(3)*(1+band)));

           
% Glättung mit gleitendem Mittelwertfilter geht nur in eine Richtung!
windowSize  = 2;
z_filt1     = filter(ones(1,windowSize)/windowSize,1,z);




mu      = mean(z');
sigma   = std(z');
% Create a matrix of mean values by
% replicating the mu vector for n rows
MeanMat = repmat(mu,length(z'),1);
% Create a matrix of standard deviation values by
% replicating the sigma vector for n rows
SigmaMat = repmat(sigma,length(z'),1);
% Create a matrix of zeros and ones, where ones indicate
% the location of outliers
outliers = abs(z' - MeanMat) > 3*SigmaMat;

outlier_position    = find(outliers==1);
x_ohne  = x;
y_ohne  = y;
z_ohne  = z;
x_ohne(outlier_position)    = [];
y_ohne(outlier_position)    = [];
z_ohne(outlier_position)    = [];
z_new               = griddata(x_ohne,y_ohne,z_ohne,X,Y,'cubic');


%% plot

h1   = figure('Name','Grafik1', 'Position',[10,100,1200,800]);
set(gca, 'Fontsize', 14,...
    'FontName','Computer modern');
hold on
surf(X,Y,z_griddata)
mesh(X,Y,z_interp2)
hold off
grid on
title('Originaldaten Plot mit Surf und Mesh')
xlabel('x-Achse')
ylabel('y-Achse')
zlabel('z-Achse')
view(-45,60)
set(gcf,'PaperOrientation', 'landscape','PaperType', 'A4')
set(gcf,'PaperUnits', 'normalized', 'PaperPosition',[0 0 1 1])
zlim([0 6])
shading interp
set(gca, 'CLim', [min(zlim), max(zlim)]);
colorbar


h2   = figure('Name','Grafik2', 'Position',[10,100,1200,800]);
set(gca, 'Fontsize', 14,...
    'FontName','Computer modern');
hold on
Z       = griddata(x,y,z_filt1,X,Y,'cubic');
surf(X,Y,Z)
shading interp
hold off
grid on
title('Test')
xlabel('x-Achse')
ylabel('y-Achse')
zlabel('z-Achse')
view(-45,60)
set(gcf,'PaperOrientation', 'landscape','PaperType', 'A4')
set(gcf,'PaperUnits', 'normalized', 'PaperPosition',[0 0 1 1])
zlim([0 6])
set(gca, 'CLim', [min(zlim), max(zlim)]);
colorbar

h3   = figure('Name','Grafik3', 'Position',[10,100,1200,800]);
set(gca, 'Fontsize', 14,...
    'FontName','Computer modern');
hold on
%Z       = griddata(x_new,y_new,z_new,X,Y,'cubic');
surf(X,Y,z_new)
shading interp
hold off
grid on
title('Test')
xlabel('x-Achse')
ylabel('y-Achse')
zlabel('z-Achse')
view(-45,60)
set(gcf,'PaperOrientation', 'landscape','PaperType', 'A4')
set(gcf,'PaperUnits', 'normalized', 'PaperPosition',[0 0 1 1])
zlim([0 6])
set(gca, 'CLim', [min(zlim), max(zlim)]);
colorbar
 


einfach kopieren und laufen lassen...

diese Idee mit dem gleitenden Mittelwert funktioniert bei einer Fläche leider nicht besonders gut... war die erste Idee

Fragen beantworte ich gerne ab Montag

schönes Wochenende derweil!
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.