Ich möchte 30 Schichten einer 3D-Matrix anzeigen. Ich verwende den MATLAB-Slice-Befehl. Meine Daten haben eine Kreissymmetrie und ihr wichtiger Teil befindet sich in der Nähe der Symmetrieachse. Wenn ich den Slice-Befehl verwende, werden die wichtigen Daten durch den Null-Teil meiner Daten verdeckt. Siehe Die Abbildung unten, die mit dem angehängten Code erstellt wurde. Ich möchte den unwichtigen Teil jeder Scheibe (die blauen Regionen) völlig transparent machen. Wie kann ich das machen?Wie wird ein Teil eines Slices (in der MATLAB-Slice-Funktion) gemäß den Werten der 3D-Datenmatrix transparent gemacht?
Der Code nach der Änderung nach Suever Antwort: (! Immer noch nicht funktioniert)
Was scheint das Problem zu sein ??? Annehmen-: Ich fand heraus, dass ich auch die FaceAlpha Eigenschaft auf ‚interp‘ gesetzt hatte
function presentFig4_ver3
close all; clc;
load('img3D_shrinked.mat' , 'im3' , 'y_n_mm' , 'xticksVec_mm')
[X,Y,Z]=meshgrid(y_n_mm,y_n_mm,xticksVec_mm);
slices=xticksVec_mm; %= 0.23:0.1:(0.23+((30-1)*0.1)); %This is the same as xticksVec_mm
len_slices=length(slices);
h=zeros(1,len_slices);
for ind=1:len_slices
h(ind)=slice(X,Y,Z, im3, [],[],[slices(ind)]);
set(h(ind),'EdgeColor','none','FaceColor','interp','AlphaData',(im3>0.001)*0.1);
set(gca,'ZDir','reverse')
hold on
end
end % of function
Hallo Süßer, aus irgendeinem Grund funktioniert Ihre Lösung nicht für mich. Ich zeige meinen Code in einer Bearbeitung der Frage. –
Ich habe das Problem gefunden. Ich musste auch die FaceAlpha-Eigenschaft auf 'interp' setzen. Danke für die Hilfe! –
@ O.T. Oh ja, tut mir leid. Ich hatte anfangs gelesen, dass Ihre 'FaceColor' auf' interp' gesetzt wurde als 'FaceAlpha'. Ich habe meine Antwort aktualisiert, um 'FaceAlpha' einzuschließen – Suever