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

Surf mit konstanten feldern

 

Meliconi
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 24.06.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.06.2014, 09:53     Titel: Surf mit konstanten feldern
  Antworten mit Zitat      
Moin in die Runde,
ich sitz grad an meiner Diplomarbeit und hab da ein kleines Problem.
Ich hab wunderschöne Matrizen und möchte sie gern surfen, allerdings ohne die Interpolation zwischen den Einzelnen Matrixeinträgen, sondern schön konstante Flächen im Raum, entsprechend dem jeweiligen Matrix Eintrag.
Das sieht dann so ähnlich aus wie ein barplot im Raum, bei dem nur die oberen Endflächen dargestellet werden.


Ich hab noch die zwei Beispiel-Bilder angehängt von der gleichen Matrize.
Die eigentliche Matrix sah so aus :
[1 2 3;
5 6 7;
8 9 4]
ich hab sie dann zu
[1 1 2 2 3 3;
5 5 6 6 7 7;
8 8 9 9 4 4]
gemacht und jeweils gesurft
Eine mit surf über die ganze Matrix, also ganz normal und
die andere mit kleinen surfs über die konstanten felder hintereinander.
ausgeführt. Ich fand diesen weg nicht sehr praktikabel, hat von euch jemand ne Idee, wie ich ohne umschreiben und co zum Ziel komme?
Achja, einpaar senkrechte Orientierungslinien würden mich auch nicht stören.

Ich hoffe mal das ich mich verständlich ausgedrückt hab und das mir jemand helfen kann...

Sonnige Grüße,
Meliconi

surfMatrix.jpg
 Beschreibung:
die MAtrix gesurft

Download
 Dateiname:  surfMatrix.jpg
 Dateigröße:  105.47 KB
 Heruntergeladen:  276 mal
Flächen.jpg
 Beschreibung:
Die Flächen konstant geplottet

Download
 Dateiname:  Flächen.jpg
 Dateigröße:  107.32 KB
 Heruntergeladen:  275 mal
Private Nachricht senden Benutzer-Profile anzeigen


Meliconi
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 24.06.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.06.2014, 10:25     Titel:
  Antworten mit Zitat      
Ich bin schon einen guten Schritt weiter,
jetzt muss ich nur noch die Farben der Barplots Seitenflächen bestimmen können, nämlich zu durchsichtig...
Hat da jemand ne Idee?

Beispiel:

Code:
f = @(x,y) exp(cos(sqrt(x.^2 + y.^2)));   % a function of two variables
d = -2*pi:0.1:2*pi;                                 % domain for both x,y
[X,Y] = meshgrid(d,d);                            % create a grid of points
Z = f(X,Y);                                             % evaluate f at every point on grid

f7 = figure;
grouped = mat2cell(Z,1*ones(126,1),1*ones(126,1));
% partition matrix into 6-by-6 blocks
fconv = @(X)mean(X(:));                          % create function handle
convCell=cellfun(fconv,grouped,...
    'UniformOutput',false);                  % apply that function to every block
convMat = cell2mat(convCell);          % convert back to a, (smaller) matrix
p12 = bar3(convMat);         % display a 3d bar plot of the aggregated data
colormap jet


[EDITED, Jan. Bitte Code-Umgebung benutzen - Danke]
Private Nachricht senden Benutzer-Profile anzeigen
 
Meliconi
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 24.06.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.06.2014, 11:38     Titel:
  Antworten mit Zitat      
Manchmal muss man ja auch nur aussprechen was man versucht um der Lösung näher zu kommen.
In diesem Sinne, Danke fürs zuhören:


Code:
f = @(x,y) exp(cos(sqrt(x.^2 + y.^2))); % a function of two variables
d = -2*pi:0.2:2*pi;                     % domain for both x,y
[X,Y] = meshgrid(d,d);                  % create a grid of points
Z = f(X,Y); % evaluate f at every point on grid
Z= Z- Z/1000;
Z2 = Z/1000;
% Set up two random data sets
data1=Z2;
data2=Z;

% plot the first data set
bh=bar3(data1,1);

% Loop through each row and shift bars upwards
for i=1:length(bh)
      zz = get(bh(i),'Zdata');
      k = 1;

      % Bars are defined by 6 faces(?), adding values from data2 will
      % shift the bars upwards accordingly, I'm sure this could be made
      % better!
      for j = 0:6:(6*length(bh)-6)
             zz(j+1:j+6,:)=zz(j+1:j+6,:)+data2(k,i);
             k=k+1;
      end

      % Reset Zdata in chart
      set(bh(i),'Zdata',zz);
end

% Set face colour to red for data1
%set(bh,'FaceColor',[1 0 0]);

% Apply hold so that data2 can be plotted
hold on;

% Plot data2
bh=bar3(data2,1);

% Set face color to blue
set(bh,'FaceColor',[0.5 0.5 0.5]);
set(bh,'EdgeColor',[0.5 0.5 0.5]);
childHandle = get(bh,'Children');
set(bh,'FaceAlpha',0.01); % 0 = transparent, 1 = opaque.
set(bh,'EdgeAlpha',0.01); % 0 = transparent, 1 = opaque.edgealpha
hold off;


[EDITED, Jan. Bitte Code-Umgebung benutzen - Danke]
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 - 2025 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.