首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >L2范数的Matlab计算非常慢。

L2范数的Matlab计算非常慢。
EN

Stack Overflow用户
提问于 2021-11-22 03:23:36
回答 1查看 265关注 0票数 4

我有以下MATLAB代码片段:

代码语言:javascript
运行
复制
>> R = randn(3000,6000);   % build a random 3000 by 6000 matrix
>> tic; norm(R, 1); toc;
Elapsed time is 0.005586 seconds.
>> tic; norm(R, 2); toc;
Elapsed time is 3.019667 seconds.
>> tic; norm(R, inf); toc;
Elapsed time is 0.005393 seconds.
>> 

我的问题是,为什么L2范数计算要比L1或L无穷范数慢得多?当然,这是一个用于测试的随机矩阵,但是对于我的工作中的实际矩阵,我可以看到类似的模式。

然而,关于Julia,结果如下

代码语言:javascript
运行
复制
julia> @time norm(R, 1);
  0.007156 seconds (1 allocation: 16 bytes)

julia> @time norm(R, 2);
  0.009142 seconds (1 allocation: 16 bytes)

julia> @time norm(R, Inf);
  0.034633 seconds (1 allocation: 16 bytes)

这完全没有意义。任何帮助都是非常感谢的!

EN

Stack Overflow用户

回答已采纳

发布于 2021-11-22 03:42:29

我邀请你读documentation for norm。最好总是将文档读入一个函数,而不是对它所做的事情做出假设。简而言之,使用矩阵输入,norm计算矩阵范数:

  1. norm(R,1)R.
  2. norm(R,Inf)的最大绝对列和,R.
  3. norm(R,2)的最大绝对行和近似为max(svd(R)).

矩阵的1-范数和无穷范数是以类似的方式计算的,因此在成本上是相似的。计算行或列上的和,以及结果的最大值,是相当便宜的。

相反,矩阵的2-范数需要一个奇异值分解,这是非常昂贵的。

在Julia中,norm计算向量范数。若要计算矩阵范数,请使用opnorm

要在MATLAB中计算矩阵的行或列的向量范数,请使用vecnorm (自R2017b)。为了计算向量化矩阵的范数,使用norm(R(:))

PS:真正的问题是,为什么朱莉娅的无限范数如此缓慢?它应该比1-范数便宜得多,比2-范数便宜得多!

票数 11
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70060566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档