matlab - MATLAB 函数 norm() 有什么作用?
问题描述
据我所知,norm(X)
用于计算矩阵的 2-范数X
。
同样在文档中,它说norm(X)
近似于max(svd(X))
,并且它们确实具有相同的结果。
但是,为什么这两个计算不相等,因为它们都是欧几里得范数?
m = [1, 2, 3; 4, 5, 6; 7, 8, 9];
norm(m) % 16.8481
sum(m.^2, 'all').^0.5 % 16.8819
解决方案
正如您已经提到的,文档说 norm(X) 近似于 max(svd(X)),根据定义,这意味着它们没有相同的结果!该文档还区分了向量和矩阵的 2 范数。向量的 2 范数是欧几里得范数,表示向量在欧几里得空间中的长度。因此,在计算向量的欧几里得范数时,计算 norm(v)=sum(v.^2)^0.5 是合适的。而对于矩阵则不是。相反 norm(m) 是计算代表 2 范数的最大奇异值 (en.wikipedia.org/wiki/Singular_value)。
推荐阅读
- ios - 纵向和横向模式的不同 UITableViewCell
- javascript - 如何防止在django中重新加载html页面
- c++ - 如何将字符串分配给 char 变量?
- c# - automapper.extensions.microsoft.dependencyinjection 和 automapper nuget 包有什么区别?
- apache-camel - Apache Camel pollEnrich 在 JMSCorrelationID 上使用选择器
- validation - 在 SwiftUI 中为 TextField 添加前缀
- html - 更改跨度检查图标为保存图标
- sqlite - 在 SQLite 中使用带有自动增量键的 upsert 时如何避免使用 key-id?
- android - Flutter:Firestore 事务崩溃 Android 仿真
- tensorflow - 使用 TensorRT (TF-TRT) 将 tensorflow saved_model 从 float32 转换为 float16 时出现问题