Saya memiliki koordinat titik (x, y, z) dan nilai intensitas (c) di masing-masing titik. Saat ini saya memiliki plot scatter untuk hal itu, tapi saya ingin mengubahnya menjadi plot mesh atau surface untuk memvisualisasikan tren lebih baik dan mengawetkan skala warna untuk nilai intensitas. Apapun bantuan yang Anda berikan!
Menggantikan Plot Scatter3 dengan Mesh Plot
Saya telah mencoba menggunakan fungsi meshgrid
untuk membuat grid 2D, lalu menggunakan fungsi sqrt
dan lain-lain untuk menghitung nilai z dan x. Namun, saya ingin mengetahui apakah ada cara yang lebih mudah untuk menggantikan plot scatter3 dengan plot mesh.
Berikut adalah contoh kode yang saya gunakan:
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
X = X(:);
Y = Y(:);
Z = Z(:);
scatter3(X,Y,Z)
Namun, saya mendapatkan error bahwa scatter3
memerlukan vektor, tidak matriks. Oleh karena itu, saya harus menggunakan fungsi plot3
dengan simbol 'o' untuk mendapat hasil yang mirip.
Menggantikan Plot Scatter3 dengan Surface Plot
Saya juga ingin mengubah plot scatter menjadi plot surface. Berikut adalah contoh kode yang saya gunakan:
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
surf(X,Y,Z,'FaceAlpha',0.2,'EdgeAlpha',0.0,'FaceColor',[1 0 0])
Namun, saya masih memiliki pertanyaan lain tentang bagaimana cara menggantikan plot scatter3 dengan plot surface yang lebih baik.
Mengoptimalkan Kinerja Komputasi
Saya juga ingin mengetahui apakah fungsi reshape
lebih cepat atau tidak dalam hal kinerja komputasi. Setelah melakukan pengujian, saya menemukan bahwa fungsi :
(colon) lebih cepat.
Berikut adalah contoh kode yang saya gunakan untuk menguji kinerja:
sizes = linspace(100,10000,100);
time_reshape = [];
time_col = [];
for i=1:length(sizes)
X = rand(sizes(i)); % Create random squared matrix
r = @() ResFcn(X);
c = @() ColFcn(X);
time_reshape = [time_reshape timeit(r)/1000] % Take average of 1000 measurements
time_col = [time_col timeit(c)/1000] % Take average of 1000 measurements
end
figure()
hold on
grid on
plot(sizes(2:end), time_col(2:end))
plot(sizes(2:end), time_reshape(2:end))
legend("Colon","Reshape","Location","northwest")
title("Comparison: Reshape vs. Colon Method")
xlabel("Length of squared matrix")
ylabel("Average execution time [s]")
hold off
Dengan demikian, saya berharap bahwa artikel ini akan membantu orang lain yang mengalami masalah serupa dengan saya.