Tujuan dari latihan ini adalah menyesuaikan model dengan beberapa data. Data yang digunakan dalam tutorial ini adalah data lidar dan dijelaskan secara rinci dalam paragraf pengantar berikut. Jika Anda tidak sabar dan ingin berlatih sekarang, silakan lewati dan langsung ke Show
pengantarSistem Lidar adalah pengukur jarak optik yang menganalisis properti cahaya yang tersebar untuk mengukur jarak. Sebagian besar dari mereka memancarkan impuls cahaya pendek ke arah target dan merekam sinyal yang dipantulkan. Sinyal ini kemudian diproses untuk mengekstrak jarak antara sistem lidar dan target Sistem lidar topografi adalah sistem yang tertanam di platform udara. Mereka mengukur jarak antara platform dan Bumi, untuk menyampaikan informasi tentang topografi Bumi (lihat untuk detail lebih lanjut) Palu, C. dan Bretar, F. Lidar Topografi Gelombang Penuh. Negara-of-the-Art. Jurnal Fotogrametri dan Penginderaan Jauh ISPRS 64(1), hlm. 1-16 Januari 2009 http. //dx. doi. org/10. 1016/j. isprsjprs. 2008. 09. 007Dalam tutorial ini, tujuannya adalah menganalisis bentuk gelombang yang direkam oleh sistem lidar. Sinyal seperti itu mengandung puncak yang pusat dan amplitudonya memungkinkan untuk menghitung posisi dan beberapa karakteristik target sasaran. Ketika jejak sinar laser sekitar 1m di permukaan bumi, sinar dapat mengenai beberapa target selama perambatan dua arah (misalnya tanah dan puncak pohon atau bangunan). Jumlah kontribusi setiap target yang terkena sinar laser kemudian menghasilkan sinyal yang kompleks dengan banyak puncak, masing-masing berisi informasi tentang satu target. Salah satu metode canggih untuk mengekstraksi informasi dari data ini adalah menguraikannya dalam sejumlah fungsi Gaussian di mana setiap fungsi mewakili kontribusi target yang terkena sinar laser. Oleh karena itu, kami menggunakan modul untuk menyesuaikan bentuk gelombang dengan satu atau sejumlah fungsi Gaussian Memuat dan visualisasiMuat bentuk gelombang pertama menggunakan >>> import numpy as np >>> waveform_1 = np.load('intro/summary-exercises/examples/waveform_1.npy') dan memvisualisasikannya >>> import matplotlib.pyplot as plt >>> t = np.arange(len(waveform_1)) >>> plt.plot(t, waveform_1) [<matplotlib.lines.Line2D object at ...>] >>> plt.show()_ Seperti yang ditunjukkan di bawah ini, bentuk gelombang ini adalah sinyal sepanjang 80 bin dengan puncak tunggal dengan amplitudo kira-kira 30 dalam bin 15 nanodetik. Selain itu, tingkat kebisingan dasar sekitar 3. Nilai-nilai ini dapat digunakan dalam solusi awal Menyesuaikan bentuk gelombang dengan model Gaussian sederhanaSinyalnya sangat sederhana dan dapat dimodelkan sebagai fungsi Gaussian tunggal dan offset yang sesuai dengan kebisingan latar belakang. Untuk mencocokkan sinyal dengan fungsinya, kita harus
ModelFungsi Gaussian didefinisikan oleh dapat didefinisikan dalam python oleh >>> def model(t, coeffs): .. return coeffs[0] + coeffs[1] * np.exp( - ((t-coeffs[2])/coeffs[3])**2 ) di mana
Solusi awalSalah satu solusi awal yang mungkin yang kami tentukan dengan inspeksi adalah >>> x0 = np.array([3, 30, 15, 1], dtype=float)_ Bugar
>>> def residuals(coeffs, y, t): .. return y - model(t, coeffs) Jadi mari kita dapatkan solusinya dengan memanggil dengan argumen berikut
>>> from scipy.optimize import leastsq >>> t = np.arange(len(waveform_1)) >>> x, flag = leastsq(residuals, x0, args=(waveform_1, t)) >>> print(x) [ 2.70363341 27.82020742 15.47924562 3.05636228]_ Dan visualisasikan solusinya fig, ax = plt.subplots(figsize=(8, 6)) plt.plot(t, waveform_1, t, model(t, x)) plt.xlabel('Time [ns]') plt.ylabel('Amplitude [bins]') plt.legend(['Waveform', 'Model']) plt.show()_ Komentar. dari scipy v0. 8 dan lebih tinggi, Anda sebaiknya menggunakan which mengambil model dan data sebagai argumen, jadi Anda tidak perlu mendefinisikan residu lagi Bagaimana Anda menyesuaikan persamaan dengan kurva dengan Python?data = kerangka data. nilai-nilai. . x, y = data[. , 4], data[. , -1] # kecocokan kurva popt, _ = curve_fit(objective, x, y) # meringkas nilai parameter cetak('y = %. 5f * x + %. 5f * x^2 + %. 5f' % (a, b, c)) # plot input vs output pyplot. sebar (x, y). x_line = arange(min(x), maks(x), 1). y_line = tujuan(x_line, a, b, c) Bagaimana Anda menjalankan regresi non linier dengan Python?Mengimpor perpustakaan yang diperlukan . x = np. atur (-5. 0, 5. 0, 0. 1) #Anda dapat menyesuaikan kemiringan dan mencegat untuk memverifikasi perubahan dalam grafik. . x = np. atur (-5. 0, 5. 0, 0. 1) #Anda dapat menyesuaikan kemiringan dan mencegat untuk memverifikasi perubahan dalam grafik. . plt. angka(figsize=(8,5)) Yang mana yang dapat digunakan untuk menyesuaikan data non linier?Semakin kecil jumlah angka kuadrat ini, semakin baik fungsi tersebut cocok dengan titik data dalam himpunan. Regresi nonlinier menggunakan fungsi logaritmik, fungsi trigonometri, fungsi eksponensial, fungsi daya, kurva Lorenz, fungsi Gaussian, dan metode pemasangan lainnya .
Apa itu pemasangan kurva non linier?Satu grup pemasangan kurva adalah linier dan grup lainnya dikenal sebagai pemasangan kurva non-linier. Jenis pemasangan kurva ini adalah metode untuk menemukan model non-linier untuk menemukan hubungan antara variabel dependen dan sekumpulan variabel independen . |