how to plot cell ?

I have for example cell {1x1 cell} {1x7 cell} {1x2 cell}, each cell is cluster.
I have to plot each cluster, how to plot together in one figure ?
Thanks

2 件のコメント

Walter Roberson
Walter Roberson 2013 年 11 月 12 日
編集済み: Walter Roberson 2013 年 11 月 12 日
What is the data structure inside the cells? For example is it an array of XYZ coordinates? Are you wanting to scatter3() based on the coordinates?
Tomas
Tomas 2013 年 11 月 12 日
ans = Z{1}
[1x3 double]
ans = Z{2}
Columns 1 through 6
[1x3 double] [1x3 double] [1x3 double] [1x3 double] [1x3 double] [1x3 double]
Column 7
[1x3 double]
ans = Z{3}
[1x3 double] [1x3 double]
I want to differentiate the color each Z{1} Z{2} Z{3}
Thanks

サインインしてコメントする。

回答 (1 件)

Walter Roberson
Walter Roberson 2013 年 11 月 12 日

0 投票

pointsize = 10;
nclust = length(Z);
colorfrac = linspace(0, 1, nclust);
clustcoords = cellfun( @cell2mat, Z, 'Uniform', 0 );
for k = 1 : length(clustcoords)
XYZ = clustcoords{k};
scatter3(XYZ(:,1), XYZ(:,2), XYZ(:,3), pointsize, colorfrac(k));
hold on
end

3 件のコメント

Tomas
Tomas 2013 年 11 月 12 日
i have to use plot3
this is my cod i want to plot Z
clear,clc
MON = [2.8 3.6 17.2; 5.4 8.3 15.8; 2.5 3.2 17.6; 9.9 10.7 13.6; 5.5 8.9 15.5; 9.7 11 13.9; 2.3 3.9 17.9; 5.7 8.1 15.1; 9.4 10.5 13; 9.9 13.2 13.7];
[m,n]=size(MON)
figure;
hold on
for k=1:size(MON,1)
plot3(MON(k,1),MON(k,2),MON(k,3),'X')
end
T=input('Zadaj počet typickych bodov :')%uzivatel zada koľko chce mať typickych bodov
for i=1:T %Pociatocne typicke body
TAZ=MON(1:T,:);
end
TAZ
hold on
for t=1:size(TAZ,1)
plot3(TAZ(t,1),TAZ(t,2),TAZ(t,3),'kx','MarkerSize', 12, 'LineWidth', 2)
end
[r,s]=size(TAZ)%rozmery TAZ
Z=cell(1,T)%vytvorenie zhlukov
z=1;
for i=1:m
for j=1:r
B = MON(i,:);
for k=1:size(B,1)
plot3(B(k,1),B(k,2),B(k,3),'Oc')
end
Z1(j)= euklid6(TAZ(j,:),B);%euklidovska vzdialenost
end
Z1
minD = min([Z1]);%minimalna hodnota
[i_min,j_min]=find(Z1==minD);%indexacia minimalnej hodnoty
[e,f]=size(Z1);
%postupne ukladanie podla prislusnosti objektu do zhlukov
for h=1:f
if (Z1(h) == Z1(j_min))
Z{h}{z}=B;
z=z+1;
end
end
end
Z;
d1=length(Z)
for i=1:d1 %zmaze prazdne miesta v poli
Z{i}(cellfun(@isempty,Z{i})) = [];
end
Z
[z1,z2]=size(Z)
Znew={};%nove pole
for j=1:z2
S1(j)=sucet1(Z(j));
end
S1
S2=0;
iter=1;
while (S1~=S2)
[t1,t2]=size(Z);%rozmery Z
for j=1:t2
d(j,:)=tazisko6(Z(j));%vypocet noveho taziska
end
d
[x,y]=size(d)%rozmery d
for k=1:size(d,1)
plot3(d(k,1),d(k,2),d(k,3),'ro','MarkerSize', 12, 'LineWidth', 2')
end
w=1;
for i=1:m for j=1:x
B = MON(i,:);
Z1(j)= euklid6(d(j,:),B);%euklidovska vzdialenost
end
Z1
minD = min([Z1]);%minimalna hodnota
[i_min,j_min]=find(Z1==minD);%indexacia minimalnej hodnoty
[e,f]=size(Z1);%rozmery Z1
%postupne ukladanie podla prislusnosti objektu do zhlukov
for h=1:f
if (Z1(h) == Z1(j_min))
Znew{h}{w}=B;
w=w+1;
end
end
end
Znew;
d2=length(Znew);%zmeria dlzku pola
for i=1:d2 %zmaze prazdne miesta v poli
Znew{i}(cellfun(@isempty,Znew{i})) = [];
end
Znew;
Z=Znew
[b1,b2]=size(Z);
for j=1:z2
S2(j)=sucet1(Z(j));
end
S2
iter=iter+1;
hold on
for w=size(TAZ,1)
plot3([TAZ(w,1); d(w,1)],[TAZ(w,2); d(w,2)],[TAZ(w,3);d(w,3)],'-r')
end
end
function [d] = tazisko6(A) %% [d] = tazisko6(A) % % Tazisko jednotlivych zhlukov(centroid)
d1=length(A); d2 =length(A{1});
s=0;
for i=1:d1
for j=1:d2
s=s+(A{i}{j});
end
if d2~=1
d=s/d2;
else
d=s;
end
end
function [ d] = euklid6( A,B )
%%[d] = euklid(A,B)
%
% Euklidovska vzdialenost bodov
[hA,tA]=size(A);
[hB,wB]=size(B);
if hA==1&hB==1
d=sqrt(dot((A-B),(A-B)));
else
C=[ones(1,hB);zeros(1,hB)];
D=flipud(C);
E=[ones(1,hA);zeros(1,hA)];
F=flipud(E);
G=A*C;
H=A*D;
I=B*E;
J=B*F;
d=sqrt((G-I').^2+(H-J').^2);
end
end
I should have everything in one plot, i dont know how to plot Z
Thanks
Walter Roberson
Walter Roberson 2013 年 11 月 12 日
nclust = length(Z);
thismap = copper(nclust); %or pink or flag or hot or ...
clustcoords = cellfun( @cell2mat, Z, 'Uniform', 0 );
for k = 1 : length(clustcoords)
XYZ = clustcoords{k};
plot3(XYZ(:,1), XYZ(:,2), XYZ(:,3), thismap(k,:));
hold on
end
Tomas
Tomas 2013 年 11 月 12 日
??? Error using ==> plot3 Data must be a single matrix Y or a list of pairs X,Y
Error in ==> knew at 107 plot3(XYZ(:,1), XYZ(:,2), XYZ(:,3), thismap(k,:));

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeNumerical Integration and Differential Equations についてさらに検索

タグ

質問済み:

2013 年 11 月 12 日

コメント済み:

2013 年 11 月 12 日

Community Treasure Hunt

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

Start Hunting!

Translated by