Verfasst am: 24.06.2014, 09:53
Titel: Surf mit konstanten feldern
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...
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 colormapjet
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;
% 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
% Set face color to blue set(bh,'FaceColor',[0.50.50.5]);
set(bh,'EdgeColor',[0.50.50.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;
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.