簡體   English   中英

需要 MATLAB 插值和排序點幫助

[英]MATLAB interpolation and sorting points help required

我現在不得不使用 MATLAB 進行圖像處理。 但我對 MATLAB 幾乎一無所知,這可能是我唯一一次使用 MATLAB(我希望)。 所以我想得到你的幫助。 這是我到目前為止所做的:

我成功地從 .trk 文件中讀取了數據並解析了它的標題和正文。 現在我必須應用插值。 在此之前,這里是有關我的變量的信息:

我有tracks <1x110470 struct> 在 track 結構下,我有兩個向量。 它們是nPointsmatrix nPoints包括向量matrix存在的點數。

例如,如果我選擇tracks(1,95607), nPoints=3 and matrix={(1.2323,1.4441,2.345),(2.333,4.555,4.123),(1.22,2.33,3.44)}

nPoints 不是一個固定的數字。 它甚至可以是 100 等。但矩陣是一個nPoints*3向量。 我總是有 3 個坐標。

現在我要做的是一個基本的插值,比如取一半的邊界並添加新的點。 讓我假設,在軌道(1,2)下我有三個點 a,b,c,d 然后我需要添加點 (a+b)/2 和 (b+c)/2 和 (c+d)/ 2.

首先,我什至無法編寫一個成功的算法來做到這一點。 請你幫助我好嗎? (插值將應用於所有軌道。但我不會在軌道(1,1)和軌道(1,2)之間進行任何插值,我只會將其應用於軌道內的點,並且軌道中的點是沒有排序。)

其次,我想知道的是:是否有可能有一個進行參數化插值的算法。 我的意思是:

假設我的觀點是:a,b

如果參數=1,那么我只想添加 (a+b)/2

如果參數=2,那么除了參數=1時,我還想擁有 (a+(a+b)/2)/2 和 ((a+b)/2)+b)/2

…………

我希望它像那樣迭代。 是否可以?

我已經編碼了幾個小時,現在我開始感到筋疲力盡。 我將非常感謝您的幫助。

親切的問候, Amadeus

我真的無法弄清楚你真正想要什么“參數化插值”,我把我最好的猜測放在這里。

我猜你想在某個時候做 a [abcd] -> [a (a+b)/2 b (b+c)/2 c (c+d)/2 d]轉換,可能需要多次迭代。

對於那個問題,我的解決方案是

ret = function interp(v, rounds)
    n=length(v);
    avg = (v(1:n-1)+v(2:n))./2;
    temp = [v(1:n-1); avg];
    ret = [temp(:), v(n)];
    if rounds>1
        ret = interp(ret, rounds-1);
    end
end

[abcd] -> [a (a+b)/2 b (b+c)/2 c (c+d)/2 d]變換由下式給出
interp([abcd], 1)

其他示例: interp([1 2], 2) -> [1 1.25 1.5 1.75 2]

查看信號處理和官方 Matlab 幫助 (F1)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM