亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python 中插值到密度較低的網格 + 最小二乘擬合

Python 中插值到密度較低的網格 + 最小二乘擬合

心有法竹 2024-01-04 16:42:55
我是Python新手,對兩個 ndarrays 的插值和最小二乘擬合有點困惑。我有 2 個 ndarray:我的最終目標是對建模光譜(藍色曲線)與觀察到的光譜(橙色曲線)進行最小二乘擬合。藍色曲線ndarray有以下參數:橙色曲線ndarray有以下參數:作為第一步也是最簡單的一步,我想繪制兩個 ndarray 之間的殘差(差異),但問題是,因為它們分別具有不同的大小 391 和 256。我嘗試使用numpy.reshapeorndarray.resphape函數,但它們會導致錯誤。正確的解決方案可能是從將藍色曲線插值到橙色曲線的密度較小的網格中開始。我嘗試過使用numpy.interp函數,但它也會導致錯誤。
查看完整描述

2 回答

?
SMILET

TA貢獻1796條經驗 獲得超4個贊

大致如下:


import numpy as np

import matplotlib.pyplot as plt


n_denser = 33

n_coarser = 7


x_denser = np.linspace(0,1,n_denser)

y_denser = np.power(x_denser, 2) + np.random.randn(n_denser)/10.


x_coarser = np.linspace(0,1,n_coarser)

y_coarser = np.power(x_coarser, 2) + np.random.randn(n_coarser)/10. + 0.5


y_dense_interp = np.interp(x_coarser, x_denser, y_denser)


plt.plot(x_denser, y_denser, 'b+-')

plt.plot(x_coarser, y_coarser, 'ro:')

plt.plot(x_coarser, y_dense_interp, 'go')


plt.legend(['dense data', 'coarse data', 'interp data'])

plt.show()

返回的內容如下:

https://img1.sycdn.imooc.com/65966fcb0001e35105870428.jpg

查看完整回答
反對 回復 2024-01-04
?
揚帆大魚

TA貢獻1799條經驗 獲得超9個贊

您的困惑似乎源于混淆您提到的方法。最小二乘不是插值方法,而是一種最小化曲線擬合方法。一個關鍵的區別是,通過插值,繪圖總是通過原始數據點。對于最小二乘法,這種情況可能會發生,但通常情況并非如此。

如果您需要傳遞原始數據點,三次樣條插值將為您提供“漂亮”的圖。

如果您想使用最小二乘法,您需要知道您想要擬合什么次數的多項式。最常見的是線性(一階)。


查看完整回答
反對 回復 2024-01-04
  • 2 回答
  • 0 關注
  • 211 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號