1樓:依然特雷西
1、實現%% 以函式的形式訓練神經網路命令。
2、實現%p為輸入向量的方法命令。
3、實現%t為目標向量的命令。
4、實現%建立一個新的前向神經網路的命令。
5、實現%呼叫演算法訓練bp網路的命令。
6、其他設定命令。
2樓:匿名使用者
主要問題出在txt樣本上,資料之間應以空格間隔,而不能是製表符,否則fcanf不能正常讀取。
matlab中的fscanf的用法如下:
a=fscanf(fid,format)
[a, count]=fscanf(fid,format,size)
[a, count]=fscanf(fid,format,size)
個人感覺用的最多的是 這樣的形式:
data = fscanf(fid,format,size);
其中data為讀取內容的陣列,他的大小由size決定。size是一個[m n]的向量,m為行,n為列(注意,這裡讀取的順序是按列優先排列的,不明白的話可以看下面的例子),若n取inf表示讀到檔案末尾。fid為fopen開啟檔案的返回值,format是格式化引數(像printf、scanf)。
舉個小例子:
路徑+檔名:d:\moon.txt
內容:13,1,3.4
3,2.1,23
1,12,2
4,5.4,6
現在為了讀取moon中的資料存在一個陣列裡,可以用如下方法
fid=fopen('d:\moon.txt');data_1 =fscanf(fid,'%f,%f,%f',[3,inf]) ;%這裡得用單引號
data_2 =fscanf(fid,'%f,%f,%f',[2,inf])
data_3 =fscanf(fid,'%f,%f,%f',[2,2])
fclose(fid);
這時data_1, data_2, data_3分別是一個陣列,其內容分別如下:
data_1
13 3 1 4
1 2.1 12 5.4
4 23 2 6
data_2
13 3.4 2.1 1 2 4
1 3 23 12 4,5 6
data_3
13 3.4
1 3由此可見,讀資料的時候,從多維陣列的水平方向,一個一個讀取,傳遞給新的陣列時,從列方向優先。
matlab中函式fscanf在檔案讀取方面的例項如下:
從檔案中有格式地讀資料
fscanf
語法1:[a,count]=fscanf(fid,format,size)
根據指定的格式從fid
檔案按照格式format讀出資料並按size的格式放入記憶體。
a :讀出的資料放入記憶體的變數名
count :返回值。0:失敗、n>0:成功,n是讀出資料個數。
fid :檔案號
size :a的資料的格式
n : 列向量
inf : 讀出檔案全部資料
[m,n] : 讀出資料以m*n的格式放入變數名a內
format :讀出資料的格式
format是字元形式,與c語言基本相同。字元形式中有「%」與字符集(d,i,o,u,x,e,f,g,s,c,…)搭配構成。
如: %s:單字元讀
%c:讀space字元
例:s=fscanf(fid,'%s') 返回一個字元。
a=fscanf(fid,']') 返回一個五位十進位制整數。
size是一個[m n]的向量,m為行,n為列(注意,這裡讀取的順序是按列優先排列的,不明白的話可以看下面的例子),若n取inf表示讀到檔案末尾。
fid為fopen開啟檔案的返回值,
format是格式化引數(像printf、scanf)。
舉個小例子:
內容:13, 1, 3.4
3, 2.1, 23
1, 12, 2
4, 5.4, 6
現在為了讀取001中的資料存在一個陣列裡,可以用如下方法
fid=fopen('001.txt');
data=fscanf(fid,'%f,%f,%f',[3,inf]) ;%這裡得用單引號
fclose(fid);
這時data中的資料如下:
13 3 1 4
1 2.1 12 5.4
3.4 23 2 6
3樓:匿名使用者
new=newff(minmax(p),[s1,s2,1],,'traingdx');
改為net=newff(minmax(p),[s1,s2,1],,'traingdx');
matlab中%的作用
4樓:憑實陀雪
在matlab中,語句後加;的是不輸出計算結果,若不加;則控制檯會有輸出。
比如:[模擬matlab控制檯]
>a=1+2a=
3>a=1+2;
>
5樓:飛實濮嫣
加分號就是不把該行的結果在matlab的視窗中顯示出來,不加就是顯示比如a
=1:4;b=
a*2因為陣列a後面加了分號,所以不會顯示,b沒加分號,所以在matlab的視窗中會顯示b=
2468
matlab中./與/有什麼區別
6樓:哀紹輝
一、演算法不同:./點除 如果a、b是矩陣,a./b就是a、b中對應的每個元素相除,得到一個新的矩陣;如果a、b是兩個數,那麼a./b就是普通的除法。
二、公式不同:/ 除如果a、b是矩陣, 比如ax=b,求出x。那麼x=a\b(代表a的逆乘以b);或者xa=b,x=b/a(代表b乘以a的逆)。
如果a、b是兩個數,那麼a/b就是普通的除法。在對數值計算時,「./」和「/」其實是沒有區別的。
例:對於矩陣a=[a b c d],1./a=[1/a 1/b 1/c 1/d],而1/a表示的是a的逆。
matlab函式舉例:
比如: x=1:1:
10,y=2:2:20,c=x.
*y則:c = 2 /8 / 18 / 32 /50 /72 / 98 /128 / 162 /200./
如果是:c=x*y,就會報錯,因為:*是矩陣相乘,x是陣列即是:
1×10的矩陣,y是陣列即是:1×10的矩陣,x*y顯然不行,因為矩陣相乘,應為:m×n矩陣 乘以 n×r矩陣才行,n要一樣。
7樓:麻瓜
一、./點除
如果a、b是矩陣,a./b就是a、b中對應的每個元素相除,得到一個新的矩陣;
如果a、b是兩個數,那麼a./b就是普通的除法
二、/ 除
如果a、b是矩陣, 比如ax=b,求出x。那麼x=a\b(代表a的逆乘以b);或者xa=b,x=b/a(代表b乘以a的逆)。
如果a、b是兩個數,那麼a/b就是普通的除法。
1.點運算是處理元素之間的運算
2.直接/在矩陣計算中只能處理符合矩陣運演算法則的運算
3.矩陣計算和作圖都是點運算
4.在對數值計算時,「./」和「/」其實是沒有區別的。
5.例:對於矩陣a=[a b c d],1./a=[1/a 1/b 1/c 1/d],而1/a表示的是a的逆
優勢特點:
1.高效的數值計算及符號計算功能,能使使用者從繁雜的數**算分析中解脫出來;
2. 具有完備的圖形處理功能,實現計算結果和程式設計的視覺化;
3.友好的使用者介面及接近數學表示式的自然化語言,使學者易於學習和掌握;
4) 功能豐富的應用工具箱(如訊號處理工具箱、通訊工具箱等) ,為使用者提供了大量方便實用的處理工具。
在應用方面,matlab 產品族可以用來進行以下各種工作:
1.數值分析
2.數值和符號計算
3.工程與科學繪圖
4.控制系統的設計與**
5.數字影象處理技術
6.數字訊號處理技術
7.通訊系統設計與**
8.財務與金融工程
9.管理與排程優化計算(運籌學)
8樓:奕劍秋
點運算是處理的元素之間的運算,而直接的/在矩陣計算中只能處理符合矩陣運演算法則的運算。比如作圖時的運算用的都是點運算。在對數值計算時,「./」和「/」其實是沒有區別的。
例如對於矩陣a=[a b c d],1./a=[1/a 1/b 1/c 1/d],而1/a表示的是a的逆
9樓:付先武
/表示的是兩個矩陣相除,也就是右乘分母矩陣的逆;
./表示的是兩個矩陣對應元素相除;
比如a=[1,2,3],b=[4,5,6],則a/b=0.41,而a./b=[1/4,2/5,3/6];a/b表示的是a*b^-1,也就相當於是矩陣的除法,而a.
/b是對應元素相除。
10樓:匿名使用者
matlab中元素有陣列和矩陣;
矩陣運算由線性代數的規則來定義;
陣列運算逐個元素執行,可用於多維陣列,句點字元(.)區分矩陣和陣列;
故./表示陣列運算,/表示矩陣運算。
更多詳細解釋如下:
matlab中{:}是什麼意思
11樓:匿名使用者
如果你原來定
bai義的nump為元胞陣列,du則nump = nump為轉zhi換為矩陣。
例如:>> a =
a =[3x3 double]
>> a=a
a =1 4 3
0 5 8
7 2 9
注意dao這種回方式僅能取出元胞資料答的第一個元胞例如:>> a =
a =[2x2 double] [2x2 double]>> a = a
a =1 4
0 5
12樓:匿名使用者
nump 為元胞陣列,nump = nump是將元胞陣列轉換為資料矩陣,
matlab中a(:).'是什麼意思 5
13樓:大野瘦子
a(:).'是把矩陣a轉換為一個行向量,就是一行。
例如:>> a = rand(2,3)
a =0.6925 0.3965 0.78020.5567 0.0616 0.3376>> b = a(:)
b =0.6925
0.5567
0.3965
0.0616
0.7802
0.3376
注意事項
a中逗號之前的:表示所有行,逗號之後的1:2:3表示列從1到3取值,步長為2,所以列能取到的值為1,3。
a(:)可以將向量轉換為列向量,行向量相當於直接轉置,列向量不變,而如果是n*m維向量則仍然是以列為主,即按照第一列,第二列的順序轉換為列向量。
而「 』 」在matlab中為轉置(共軛轉置),當矩陣含有虛部的時候會先共軛再轉置,因此當只需要轉置時要用」 .『 「,應當從平時就養成良好習慣轉置用.』,避免出現錯誤。
MATLAB神經網路BP,誤差超大,怎樣除錯是誤差更接近目標值?主要除錯哪些引數?謝謝
被推薦的答案倒是沒說錯,基本上和沒說一樣 就好比問怎麼安排時間,回答一個 合理安排時間 誤差大,第一步需要嘗試的是做歸一化處理。有線性歸一化,有對數函式歸一化等等,這個你可以去網上搜尋資料歸一化方法,有相關的 應該。第二部需要做出的改動是隱層節點數量,如果節點數量太多,那麼結果的隨機性就會很大,如果...
matlab中建立bp神經網路的函式newff的引數的
1.newff雖然沒有規定輸入層神經元個數,那輸入層神經元個數是如何確定的?輸入層是根據你讀入資料的維度,自動生成的。2.我現在讀入了10張 把每張 歸一化成了50 20的,並轉換成1 1000的行向量,最後生成了10 1000的二維矩陣,然後,我再用eye 10,10 函式製造了一個單位矩陣,那麼...
神經網路權值怎麼確定,BP神經網路中初始權值和閾值的設定
致愛麗絲星空之夜 神經網路的權值是通過對網路的訓練得到的。如果使用matlab的話不要自己設定,newff之後會自動賦值。也可以手動 net.iw net.bias 一般來說輸入歸一化,那麼w和b取0 1的隨機數就行。神經網路的權值確定的目的是為了讓神經網路在訓練過程中學習到有用的資訊,這意味著引數...