導航:首頁 > 源碼編譯 > 找曲線折點演算法

找曲線折點演算法

發布時間:2022-06-16 08:40:32

1. 找出一個二維數組的拐點演算法

拐點可以這樣去求:判斷條件:(data[n+1]-data[n])*(data[n+2]-data[n+1])<0,不論波谷還是波峰都可以求,如果要求即使兩個相鄰數一樣也算是拐點的話,那麼條件改為<=0即可!

2. 基於什麼原理能確定一條曲線的轉折點,曲線前一段是線性,後段水平,轉折處為類圓角。

你指的轉折點,是二階導數的極值。

3. 怎麼在excel曲線里找出所定點,並且都要標出對應的坐標值,謝謝

找出所定點方法:
1.Ctrl+F打開查找窗口;鍵入查找內容;
2.滑鼠點擊最後一個sheet表格;按住滑動按鈕至最左(在此過程保持停在最後一個sheet編輯狀態);
3.按住shift鍵並點擊第一個sheet表格使全選所有工作表格,點查找窗口「查找」即可。

標出對應的坐標值:
點圖表區——右鍵——圖表選項——數據標志——值(勾選)——確定即可。

4. 我做分析實驗得到了很多的數據(很多坐標)我怎麼用matlab將他們繪成平滑的曲線然後再找出轉折點

很多坐標?坐標的單位不同?還是很多數據點,如果是數據點的話,建議先做異常數據剔除,可以用馬氏距離剔除,然後用樣條擬合曲線,最後用求導的方式找最大最小點,這就是轉折點。

5. 求貝塞爾曲線的頂點坐標的演算法

德卡斯特里奧演算法可以計算貝塞爾曲線上的點C(u),u∈[0,1]。因此,通過給定一組u的值,便可以計算出貝塞爾曲線上的坐標序列,從而繪制出貝塞爾曲線。

德卡斯特里奧演算法的基礎就是在向量AB上選擇一個點C,使得C分向量AB為u:1-u(也就是∣AC∣:∣AB∣= u)。給定點A、B的坐標以及u(u∈[0,1])的值,點C的坐標便為:C = A + (B - A) * u = (1 - u) * A + B * u。

定義貝塞爾曲線的控制點Pi編號為0i,其中,0表示是第0次迭代。當第一、二、三……次迭代時,0將會被1、2、3……替換。

德卡斯特里奧演算法的思想如下:為了計算n次貝塞爾曲線上的點C(u), u∈[0,1],首先將控制點連接形成一條折線00-01-02……0(n - 1)-0n。利用上述方法,計算出折線中每條線段0j-0(j+1)上的一個點1j,使得點1j分該線段的比為u:1-u。然後在折線 10-11-……-1(n-1)上遞歸調用該演算法,以此類推。最終,求得最後一個點n0。 德卡斯特里奧證明了,點n0一定是曲線上的點。

如上圖,曲線控制點是00、01、02、03、04、05。線段00-01上取點10,10分該線段的比為u:1-u,類似地取點11、 12、13、14,然後第二次迭代在線段10-11上取點20,點20分該線段的比為u:1-u,類似地取點21、22、23。然後進行下一次迭代,依次類推,直到最後在線段40-41上取點50,50是最終惟一的點,也是在曲線上的點。

上述直觀的演算法描述可以表達成一個計算方法。

首先,將所有給定的控制點排列成一列,在上圖中,即為最左邊的一列。每一對相鄰的控制點可以伸出兩個箭頭,分別指向右下方和右上方。在相鄰箭頭的交叉處,生成一個新的控制點。例如,控制點ij和i(j +1)生成新的控制點(i + 1)j。指向右下方的箭頭表示乘以(1 - u),指向右上方的箭頭表示乘以u。

因此,通過第0列,可以求出第1列,然後求出第2列……,最終,在n次迭代後,可以到達惟一的一個點n0,這個點就是曲線上的點。

該計算過程演算法如下:

Input: array P[0:n] of n+1 points and real number u in [0,1] Output: point on curve, C(u) Working: point array Q[0:n] for i := 0 to n do

Q[i] := P[i]; // save input

for k := 1 to n do

for i := 0 to n - k do

Q[i] := (1 - u)Q[i] + u Q[i + 1];

return Q[0];

該計算方法可以推導出一個遞歸關系:

但是,直接通過遞歸方法計算Pi,j效率低下,其原因與通過遞歸方法計算斐波那契數列一樣:遞歸方法有大量的重復計算。

德卡斯特里奧演算法還有一個有趣的性質。對於同一列中的連續的一組控制點,對其應用德卡斯特里奧演算法,那麼由這些控制點確定的曲線上的點,就是以這組控制點為邊的等邊三角形中,與這些控制點相對的頂點。

例如:由控制點02、03、04、05確定的曲線上的,對應u的點是32,正如下圖中藍色的等邊三角形所表示的。同樣,控制點11、12、13確定的曲線上的,對應u的點是31,如圖,黃色三角形所示。

根據上面所述,通過給定一組u值,便可以計算出貝塞爾曲線上的坐標序列,從而繪制出貝塞爾曲線。

view plain to clipboardprint?
// arrayCoordinate為控制點

void CChildView::DrawBezier(CDC *pDC, const CArray<CPoint, CPoint>& arrayCoordinate)

{

int n = 0;

if((n = arrayCoordinate.GetSize()) < 2)

return;

double *xarray = new double[n - 1];

double *yarray = new double[n - 1];

double x = arrayCoordinate.GetAt(0).x;

double y = arrayCoordinate.GetAt(0).y;

for(double t = 0.0; t <=1; t += 0.05 / n) // 調整參數t,計算貝塞爾曲線上的點的坐標,t即為上述u

{

for(int i = 1; i < n; ++i)

{

for(int j = 0; j < n - i; ++j)

{

if(i == 1) // i==1時,第一次迭代,由已知控制點計算

{

xarray[j] = arrayCoordinate.GetAt(j).x * (1 - t) + arrayCoordinate[j + 1].x * t;

yarray[j] = arrayCoordinate.GetAt(j).y * (1 - t) + arrayCoordinate[j + 1].y * t;

continue;

}

// i != 1時,通過上一次迭代的結果計算

xarray[j] = xarray[j] * (1 - t) + xarray[j + 1] * t;

yarray[j] = yarray[j] * (1 - t) + yarray[j + 1] * t;

}

}

pDC->MoveTo(x, y);

pDC->LineTo(xarray[0], yarray[0]);

x = xarray[0];

y = yarray[0];

}

delete [] xarray;

delete [] yarray;

}

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/Fioman/archive/2008/06/23/2578895.aspx

6. 如何在Excel上曲線圖上找點

1、打開Excel表格,然後點擊插入,接著點擊散點圖,然後在Excel表格中插入曲線圖就可以了。

7. 怎麼求一元三次方程曲線的變化趨勢的轉折點

就是三階矩陣求特徵值唄 求出來的一元三次方程可以化成 (aλ-b)(cλ-d)(eλ-f) 主要看bcd=方程最後面的常數 然後ace=三次項系數 一般三次項系數都是1的 主要看最後的常數就行 例如常數是12 那也就是3*2*2或者1*4*3或者1*12*12或者2*1*6 略微

8. EXCEL上怎麼找到兩條曲線的交點

1.用EXCEL的折線圖或帶平滑線的散點圖把數據繪出。

9. 曲線怎樣找點

首先,確定哪些方法是嵌合,如最小二乘法。然後確定演算法,就可以開始編程
推薦去這個數值書看,有各種各樣的擬合方法介紹。

因為我們知道,擬合曲線!怎麼辦MATLAB吧!這多簡單啊!何必用C

10. 怎麼在excel的曲線上找一一對應的點

在創建散點圖或折線圖時,選擇帶有數據點標記的圖表類型,就能得到帶有對應點的曲線圖。
在生成圖表後,可以單擊圖表,通過選擇 圖標工具/設計選項卡/圖表布局工具組
選擇帶有對應點數據標記的布局方案,
能夠得到帶有對應數據點和數據點對應數值的曲線圖表。

閱讀全文

與找曲線折點演算法相關的資料

熱點內容
知網程序員 瀏覽:702
怎麼把電子版投標報價加密 瀏覽:29
電腦安全編譯器 瀏覽:364
在伺服器里如何調創造 瀏覽:835
知雲登錄為什麼找不到伺服器 瀏覽:815
python切片位置 瀏覽:375
平板加密視頻怎麼播放 瀏覽:377
程序員上下班不帶電腦 瀏覽:835
androidrsa文件 瀏覽:64
linuxlvds 瀏覽:103
程序員選擇職場 瀏覽:345
累加C語言演算法 瀏覽:948
足浴店用什麼app招人 瀏覽:191
php調用thrift 瀏覽:191
java精度丟失 瀏覽:903
地梁承台相交處箍筋加密 瀏覽:95
程序員繪本 瀏覽:647
php線程安全版 瀏覽:407
lilolinux 瀏覽:111
proteus51編譯工具 瀏覽:309