Is there any way to speed this up?

조회 수: 11 (최근 30일)
Gavin
Gavin 2024년 5월 23일
댓글: Gavin 2024년 5월 24일
I have a large (100x100x100) dataset of very small probabilites for electron locations in the hydrogen atom. I am attempting to create a 3-D heatmap of sorts, which I have done, using isosurface and layering many of them ontop of eachother using this code.
figure()
Psi = importdata("psi.mat");
n = 4;
l = 2;
m = 0;
isovalues1 = 1*10^(-(n+2)):1*10^(-(n+2)):1*10^(-n);
for i=1:length(isovalues1)
isosurface(Psi.^2,isovalues1(i))
alpha(isovalues1(i)*10^(n-2));
end
axis equal
axis vis3d
ax=gca; ax.SortMethod='childorder';
colorbar
title(['N = ',num2str(n),', L = ',num2str(l),', M = ',num2str(m)])
This works. But as you can imagine, making 100 isosurfaces at a time can be quite slow. I was wondering if there was any way to speed up what I have or perhaps another way to make a 3-D heatmap.

채택된 답변

Cris LaPierre
Cris LaPierre 2024년 5월 23일
편집: Cris LaPierre 2024년 5월 24일
My question is if it has to be done with isosurfaces. Here's an approach that uses scatter3. You can adjust the marker size to change how the data is displayed. It does look different, but it seems all the important info is still there.
load("psi.mat",'Psi');
n = 4;
l = 2;
m = 0;
% create (x,y,z) coordinates
[X,Y,Z] = meshgrid(1:size(Psi,2),1:size(Psi,1),1:size(Psi,3));
isovalues1 = 1*10^(-(n+2)):1*10^(-(n+2)):1*10^(-n);
% discretize the data by isovalues
[bin,edges] = discretize(Psi.^2,isovalues1);
% Plot data
idx = bin(:)>0;
scatter3(X(idx),Y(idx),Z(idx),1,isovalues1(bin(idx)),'filled')
alpha(isovalues1(bin(idx)).*10^(n-2))
axis equal
axis vis3d
colorbar('TickLabels',isovalues1)
title(['N = ',num2str(n),', L = ',num2str(l),', M = ',num2str(m)])
  댓글 수: 1
Gavin
Gavin 2024년 5월 24일
wow yes thank you! thats perfect. Im still a little new to matlab so this didnt even cross my mind as a possibility.
thanks again

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Data Distribution Plots에 대해 자세히 알아보기

제품


릴리스

R2024a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by