matlab norm向量和矩阵的范数
一、向量的范數
? ? 首先定義一個向量為:a=[-5,6,8, -10]
1.1 向量的1范數
? ? 向量的1范數即:向量的各個元素的絕對值之和,上述向量a的1范數結果就是:29,MATLAB代碼實現為:norm(a,1);
1.2 向量的2范數
? ? ?? 向量的2范數即:向量的每個元素的平方和再開平方根,上述a的2范數結果就是:15,MATLAB代碼實現為:norm(a,2);
1.3 向量的無窮范數
? ? 向量的負無窮范數即:向量的所有元素的絕對值中最小的:上述向量a的負無窮范數結果就是:5,MATLAB代碼實現為:norm(a,-inf);
? ? 向量的正無窮范數即:向量的所有元素的絕對值中最大的:上述向量a的負無窮范數結果就是:10,MATLAB代碼實現為:norm(a,inf);
二、矩陣的范數
? ? 首先我們將介紹數學中矩陣的范數的情況,以矩陣A = [ -1 2 -3;4 -6 6] 為例。
2.1 矩陣的1范數
? 矩陣的1范數即:矩陣的每一列上的元素絕對值先求和,再從中取個最大的,(列和最大),上述矩陣A的1范數先得到[5,8,9],再取最大的最終結果就是:9,MATLAB代碼實現為:norm(A,1);
2.2 矩陣的2范數
? 矩陣的2范數即:矩陣ATA的最大特征值開平方根,上述矩陣A的2范數得到的最終結果是:10.0623,MATLAB代碼實現為:norm(A,2);
2.3 矩陣的無窮范數
? ?? 矩陣的無窮范數即:矩陣的每一行上的元素絕對值先求和,再從中取個最大的,(行和最大),上述矩陣A的1范數先得到[6;16],再取最大的最終結果就是:16,MATLAB代碼實現為:norm(A,inf);
?? 接下來我們要介紹機器學習的低秩,稀疏等一些地方用到的范數,一般有核范數,L0范數,L1范數(有時很多人也叫1范數,這就讓初學者很容易混淆),L21范數(有時也叫2范數),F范數。上述范數都是為了解決實際問題中的困難而提出的新的范數定義,不同于前面的矩陣范數。
2.4 矩陣的核范數
? ? 矩陣的核范數即:矩陣的奇異值(將矩陣svd分解)之和,這個范數可以用來低秩表示(因為最小化核范數,相當于最小化矩陣的秩——低秩),上述矩陣A最終結果就是:10.9287, MATLAB代碼實現為:sum(svd(A))
2.5 矩陣的L0范數
?? 矩陣的L0范數即:矩陣的非0元素的個數,通常用它來表示稀疏,L0范數越小0元素越多,也就越稀疏,上述矩陣A最終結果就是:6
2.6 矩陣的L1范數
? ?? 矩陣的L1范數即:矩陣中的每個元素絕對值之和,它是L0范數的最優凸近似,因此它也可以表示稀疏,上述矩陣A最終結果就是:22,MATLAB代碼實現為:sum(sum(abs(A)))
2.7 矩陣的F范數
?? 矩陣的F范數即:矩陣的各個元素平方之和再開平方根,它通常也叫做矩陣的L2范數,它的有點在它是一個凸函數,可以求導求解,易于計算,上述矩陣A最終結果就是:10.0995,MATLAB代碼實現為:norm(A,‘fro’)
2.8 矩陣的L21范數
? 矩陣的L21范數即:矩陣先以每一列為單位,求每一列的F范數(也可認為是向量的2范數),然后再將得到的結果求L1范數(也可認為是向量的1范數),很容易看出它是介于L1和L2之間的一種范數,上述矩陣A最終結果就是:17.1559,MATLAB代碼實現為: norm(A(:,1),2) + norm(A(:,2),2) + norm(A(:,3),2)
?
總結
以上是生活随笔為你收集整理的matlab norm向量和矩阵的范数的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: LOG与DOG的关系
 - 下一篇: matlab 去除pdf文档水印