首先先生成100個隨機點
matlab代碼
%在200*200矩陣隨機生成100棵樹
n=200;
a = [ones(100,1);zeros(39900,1)];
a = reshape(a(randperm(40000)),200,200);
z = zeros(n,n);
%生成影像
imh = image(cat(3,a,z,z));
set(imh, 'erasemode', 'none');

然后就是把這100個點如何均勻分布的問題
我想得是用D8棋盤距離演算法先把各個點之間距離算出來后設定每個點的空間(9*9的小矩陣)
T=bwdist(a,'chessboard');%D8演算法算出距離
尋找T中等于0的點然后保存0點的x,y
【x,y】=(T==0);
然后用一個演算法來帶入每個點去實作排斥
如果小矩陣有其他點就排斥到小矩陣邊緣
然后我發現當我開始移動點時,重復點問題處理有點困難。
如果以下三角矩陣移動為規則

第一個中心點為例移動右下方點后,當我再以右下方點為中心點時坐標已經被改變了而我的坐標是以D8演算法生成的矩陣坐標算的
還是實作不了排斥
最后均勻分布也實作不了,本人小白剛剛接觸matlab還有演算法這一類,本人演算法相當弱麻煩大佬指點一二!
(問題:matlab在200*200矩陣隨機生成100個點(可以是任意個點)后使其均勻分布在矩陣上。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/281014.html
標籤:數據結構與算法
上一篇:j-Interop連接64位系統的WMI獲取資訊報錯:java.lang.ArrayIndexOutOfBoundsException: 16
