Matlab 科研中的心得(updating)

2021-06-18 08:19:43 字數 1108 閱讀 9012

1.如果要驗證一條很可能正確的定理是否正確,就使用符號化的變數,但是計算會很慢。

如果要驗證乙個不知道正不正確的定理,而且使用符號計算太慢時,帶入具體數值驗證,因為具體數值下成立是其必要條件。

如果要從這條已知正確的定理中出發,進行一些計算,那就要明確自己:已知什麼?要求什麼?即確定需要將那些符號數值化,哪些繼續當做符號。在生成模擬資料的時候要注意資料的合理性。

2.matlab中盡量不要使用諸如 f1 f2 f3 這樣的變數,不利於用迴圈操作,盡量使用cell型別 f,比使用eval方便且直觀。

3.能整體操作就整體操作,能泛型的就盡量泛型,能用迴圈盡量迴圈。要衡量哪個代價更大,不要忽視後期改來改去的工作量。

比如 subs函式,使用一次能解決,就不要多次使用改起來也不好找,看的眼花。

4.matlab中將表示式中的符號變數換成數值之後是有誤差的,如果參與計算的數值較大,可能絕對誤差也比較大,要考慮相對誤差。

5.注釋**!不要低估以後你會用到這個函式的可能性和再次看懂所需要的時間。

6.ax=0 使用svd,不要使用0\a,只能得到0。

7.刪除某一列的兩種方法

在原矩陣刪除,新建矩陣

8.有時候顯示值相等,真實值不一定相等,x=3.6000e+5,y=360000; x-y可能等於乙個很小的數。

9.[v,d]=eig(a,b)不要相信d中某一特徵值的個數,有時候只有乙個,但是也可能是多重特徵值,可以使用rank(a-lamda×b)來檢驗,或者直接使用null()

10.由字元型變數計算得到的結果很可能是字元型 

>syms x;

>a = x/x;

>class(a)

sym11.

不要忽視數值化之後的損失,有時候很巨大

比如乙個矩陣中如果有很大的數和相對很小的數,小的數就會被忽略,各種計算都會造成莫名其妙的影響,所以要盡量保證數的大小在乙個量級上,比如使用歸一化的方法。

12.齊次座標有時候不能歸一,比如面積不變情況下的m,如果歸一,就不再滿足那個恒等式。

13.rank(a'a) = r(a) 證明:

所以,a 是m x n , m>=n的時候 a'a 是 n x n,a'a的秩可能為n,即滿秩; m

科研汪的一點心得

神經網路永遠只是科研工作者的乙個工具,永遠不能用神經網路作為自己 的乙個idea。改進神經網路並不是乙個科學創新,甚至在某種角度上連乙個工程創新都不算,因為加減神經網路的層數,改變分類器,更換損失函式並不是你的創新,神經網路本來就是黑箱,任何人都需要在這個黑箱上根據自己的輸入適當修改神經網路。作為乙...

matlab中eval函式的使用心得

eval 的作用是能將輸入的字串轉換為matlab可執行的語句 可用於變數的批量命名和賦值 例 完成100個變數的命名及賦值,例如完成m1 1 m2 2 m3 3 m98 98 m99 99 m100 100 直接賦值需要100行 利用eval 函式可大大方便整個賦值過程,只需3行 即可完成 具體 ...

提高matlab執行速度的心得

首先說說matlab 與其他語言的差異 例如對於c或者c 來說,只要演算法的思想不變 採用的資料結構相同,不同人寫出來的語句在效率上一般不會產生太大的差別。所以,對於c來說,程式的好壞一般由演算法來決定。但是,在matlab中,同樣的演算法 同樣的結構 同樣的流程,如果採用的語句不一樣,在效率上就會...