2012-02-23 26 views
5

Bir değere bağlı olarak Matlab numaralı 3D noktaları farklı renklerde çizdirmek istiyorum. Aşağıdaki kodlarım var ama bu işe yaramaz çünkü plot3d bir vektöre ihtiyaç duyuyor.Matlabdaki 3D noktaları Çizelge

x = vdhf_data.data(:,1); 
y = vdhf_data.data(:,2); 
z = vdhf_data.data(:,3); 
data = vdhf_data.data(:,4); 

grid on 
hold all 

for k=1:length(x) 
    if data(k) < 6 
     plot3d(x(k), y(k), z(k), 'ws--', 'MarkerEdgeColor', 'r', 'MarkerFaceColor', 'r') 
    else 
     plot3d(x(k), y(k), z(k), 'ws--', 'MarkerEdgeColor', 'g', 'MarkerFaceColor', 'g') 
    end 
end 

Matlab'da nasıl yapılır?

cevap

9

I

scatter3(x,y,z,ones(size(x)),data,'filled') 

Bu aynı boyutta tüm noktaları çizmek ve mevcut renk haritası kullanılarak, veri değerine göre bunları renk olacak kullanmak. Her bir noktanın boyutunu ölçeklendirmek için verileri de kullanabilirsiniz.

scatter3(x,y,z,data.^-2,data,'filled') 
+0

I yerine inanıyoruz 'olanlar (boyut (x)) 'scatter3 boyut vektör varsayılan boyutu için aynı boyutta ya da boş bir (' [] ') için sayısal bir değer olabilir. – yuk

+1

Evet, bir skaler olabilir. Sadece iki tane markografiye sahip olmak istiyorum. Bunu bir döngü yerine tek satırda ekleme imkanı var mı? – Razer

+0

Sadece renk haritanızı ayarlamanız gerekecek. Yani iki renk (kırmızı ve mavi) için bu renk eşlemi gibi bir şey yapacaksınız ([bir (50,1) * [1 0 0]; bir (50,1) * [0 0 1]])) veri aralığının ortasındaki renk bölümü. Eğer belirli bir sayıda olmasını istiyorsanız, (n-a, 1) olanları (n + a, 1) buna göre ölçeklendirmelisiniz. – zamazalotta