2016-04-15 10 views
0

Wenn ich eine Matrix aus drei Spalten und 6 Zeilen habe, repräsentieren die Spalten die {x, y} -Koordinaten des Mittelpunkts eines Kreises und die dritte ist die (z), die das Diagramm darstellen um das Zentrum zu plotten, wird die {z} mit dem Randoperator erzeugt, um entweder null oder eins zu sein. Ich möchte nicht {x, y} plotten, wenn ihre {z} gleich Null ist, aber die Anzahl von Einsen muss immer mehr als 3 sein kann ich das tun ich diesesWie kann ich die Anzahl der geplotteten Kreise steuern

limit=6; 
for i=1:raw 
xy(i,1)=round(rand*(limit)); 
xy(i,2)=round(rand*(limit)); 
xy(i,3)=round(rand)*1; 
if((xy(i,3)==1)>=3) 
if(xy(i,3)==0); 
xy(i,1)=inf; 
xy(i,2)=inf; 
end 

Ende Ende

+0

genau das, was ich will –

Antwort

0

Anstelle der Schleife versucht haben, und zufällige Trigger Generation:

xy(ii,3)=round(rand); 

können Sie:

xy=round(rand(limit,3));   %% Create limit x 3 random matrix 
Ones=[ones(3,1);zeros(limit-3,1)]; %% Create column vector of [1;1;1;0;...;0] 
Indices=randperm(limit);   %% Create random permutation of indices 
xy(:,3)=Ones(Indices);    %% Shuffle Ones vector by randomly and assign it to 3rd column assigned Indices 
xy(find(xy(:,3)==0),1:2)=inf;  %% Assign NaN value to rows where xy(ii,3)==0 
+0

danken Ihnen sehr viel, aber was ist mit der Bedingung, die nur dann, wenn Anzahl von Einsen mehr als 39 gehen und chang die Werte –

+0

Es tut mir leid, ich verstehe die Frage nicht. Wenn Sie 39 Punkte zeichnen möchten, verwenden Sie stattdessen Einsen (39,1). Aber Vorsicht Indexüberlauf! – Crowley

Verwandte Themen