基於MATLAB的BP神經網路反演水質引數

2021-09-25 07:20:51 字數 1182 閱讀 2347

點滴學習,貴在記錄

在做乙個關於水質反演的專案時,常規模型精度較低,因此考慮採用bp神經網路來做反演。我要實現的是基於樣本資料訓練bp神經網路,然後基於此匯入tif影像資料,然後得到水質引數的空間分布影像(帶座標系)。

讀取樣本點。將k個樣本點分成訓練集和測試集,我的樣本點資料為k*4的矩陣,k為樣本點個數,4為波段數。資料需要轉置後並進行歸一化處理才可匯入net模型。建立神經網路採用newff()函式,訓練後的資料性需要進行轉成反演值。

% 神經網路建立

net=

feedforwardnet

(hiddensizes,trainfcn)

hiddensizes:神經元個數,預設單層10個。

trainfcn:訓練函式,預設』trainlm』

%  資料歸一化

[input_train, ps_input]

=mapminmax

(input_train,0,

1);

% 反歸一化

t_sim =

mapminmax

('reverse'

,t_sim,ps_output)

;

模型訓練完成便可做**,對水質引數進行反演

首先讀取影像,

影像為m×n×l的多光譜影像。需要轉成m×n行,l 列的矩陣,然後轉置成l行,m×n列的矩陣,**實現如下

[a,r]

=geotiffread

('f:\demo\demo1.tif'

)info =

geotiffinfo

('f:\demo\demo1.tif'

)%轉為m*n,l矩陣

a =double

(reshape

(a,[info.height*info.width,4]

))%影像轉置

inputimg =a(

:,:)';

歸一化後做**測試,得到反演結果並輸出tif格式的影像。

outimg = sim(net,inputimg)更新

新版本的matlab裡面,前饋神經網路已經函式已經改為feedforwardnet()

BP神經網路(基於MATLAB)

clc clear all 匯入資料 load s data.mat s含量所用資料 n 12 n 是自變數的個數 m 1 m 是因變數的個數 讀取訓練資料 train num 1600 訓練樣本數 train data s data 1 train num,特徵值歸一化 train input,m...

Matlab實現BP神經網路

該實現為 資料探勘 課程的一次作業。資料在 上,所以資料為csv格式。但bp神經網路演算法為最一般的實現,所以有參考價值。close all 關閉開啟的檔案 clear 清除記憶體中的資料 echo on 顯示執行的每一條命令 clc 清除命令列視窗 pause 敲任意鍵開始 定義訓練樣本 p為輸入...

基於BP神經網路的分類

使用的是乙個簡單的資料集fisheriris,該資料集資料類別分為3類,setosa,versicolor,virginica。每類植物有50個樣本,共150個樣本代表150朵花瓣。每個樣本有4個屬性,分別為花萼長,花萼寬,花瓣長,花瓣寬。其中meas是150 4的矩陣代表著有150個樣本每個樣本有...