2016-06-11 62 views
1

所以我有一個可以用2個矢量描述的直線網格。 1表示單元格中心的x座標,另一個表示y座標。這些只是間距爲x的點,間距是50縮放到10,縮放到20(55..45..30..10,10,10..10,12..20,20,20),y間距是60縮放到40縮放到60(60,60,60,55..42,40,40,40..40,42..60,60)和電網由這樣Matlab - 從中​​點計算1d個連續線段邊緣的算法?

e.g. x = 1 2 3, gridx = 1 2 3, y = 10 11 12, gridy = 10 10 10 
         1 2 3      11 11 11 
         1 2 3      12 12 12 

所以然後細胞中心1是1,10 cc2是2,10等

現在我試圖制定一個算法來計算在x和y方向細胞邊緣的位置。所以就像我的第一個想法是首先使用x(1) - [x(2)-x(1)]/2得到第一個邊,在實際情況下x(2)-x(1)等於60, x(1)= 16348.95 so celledge1 = x(1)-30 = 16318.95。然後計算後的第一個我經過一個循環,並計算出其餘的是這樣的:

for aa = 2:length(x)+1 
    celledge1(aa) = x(aa-1) + [x(aa-1)-celledge(aa-1)] 
end 

而且我做y的一樣。然而,這是行不通的,我的y矢量在邊緣間距應該是40的區域是35,45,35,45 ...大約。

任何人都有任何想法,爲什麼這不起作用,並可以指出我在正確的方向。乾杯

編輯:試圖找到利用幾何alebra一個解決方案:

enter image description here

我們正在努力尋找點A,B,C,....小時。從基本幾何我們知道:

c1 (centre 1) = [A+B]/2 and c2 = [B+C]/2 etc. etc. 

所以我們有7個方程和8個變量。我們也知道中心之間的前幾個距離是相等的(60,60,60,60),因此第一個段也是60。

B - A = 60 

所以現在我們有8個方程和8個變量,所以我做了這個算法在Matlab:

edgex = zeros(length(DATA2.x)+1,1); 
edgey = zeros(length(DATA2.y)+1,1); 

edgex(1) = (DATA2.x(1)*2-diffx(1))/2; 
edgey(1) = (DATA2.y(1)*2-diffy(1))/2; 

for aa = 2:length(DATA2.x)+1 
    edgex(aa) = DATA2.x(aa-1)*2-edgex(aa-1); 
end 

for aa = 2:length(DATA2.y)+1 
    edgey(aa) = DATA2.y(aa-1)*2-edgey(aa-1); 
end 

我仍然得到了相同的答案與Y間距會35,45,35之前,45它應該是40,40,40 ...它可能是一個準確度錯誤?

編輯:這裏如果烏拉圭回合感興趣的數字,我也做了同樣的計算如上僅在Excel:http://www.filedropper.com/workoutedges

+0

我不知道這是有關您的問題,但檢查['voronoi'](http://in.mathworks.com/help/matlab/ref/voronoi.html )功能及其背景。我相信他們有一個函數來計算頂點。但是,如果不合適,則很抱歉。 – crazyGamer

+0

你在第二行失去了我。 「像x間距是50縮放到10縮放到20」是什麼意思?你是怎麼從中得到「(55..45..30..10,10,10..10,12..20,20,20)」的?什麼是缺失值?我認爲這個問題可以通過簡單地對您的樣本數據進行計算來簡化。你有很多關於什麼都不起作用的隨機數據,但沒有任何我能夠看到的,正是你想要的結果。 – beaker

+0

@beaker這只是中點之間的距離,所以第一對中點是50分開,然後他們縮小到20,所以間距逐漸減小到20,而其中間點20則縮小到10,然後縮小到20.我想要的是計算我的中點之間的一組數字,每個中點之間的數字都是精確的中心點。 –

回答

0

看來你只是想插值數據。你可以用做內置interp1

x = [30 24 19 16 8 7 16 22 29 31]; 
xi = interp1(2:2:numel(x)*2, x, 1:(numel(x)*2+1), 'linear', 'extrap'); 

這只是設置了原始數據爲甚至 -indexed元素和內插指標,包括外推的兩個端點。

結果:

xi = 

Columns 1 through 11: 

    33.0000 30.0000 27.0000 24.0000 21.5000 19.0000 17.5000 16.0000 12.0000 8.0000 7.5000 

Columns 12 through 21: 

    7.0000 11.5000 16.0000 19.0000 22.0000 25.5000 29.0000 30.0000 31.0000 32.0000