Matlab 계산 L2 규범은 매우 느리

0

질문

나는 다음과 같은 MATLAB snippet:

>> 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 규범을 계산하는 것보다 훨씬 느리 L1L 무한 표준? 이것은 임의의 행렬은 테스트를 위한 목적은 물론,그러나 실제 매트릭스 내 작품에서 볼 수 있는 비슷한 패턴의 관점에서 경과된 시간입니다.

그러나,줄리아,결과는 다음과 같습니다

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)

이것은 아무 의미가 없습니다. 어떤 도움에 감사드립니다!

julia linear-algebra matlab matrix
2021-11-22 03:23:36
1

최고의 응답

11

나는 당신을 초대하여 읽기 에 대한 문서 norm. 그것은 좋은 아이디어를 항상 설명서를 읽고 함이트 및 가정이 무엇인지에 대해 않습니다. 즉,행렬 입력 norm 계산 행렬의 표준:

  1. norm(R,1) 이 최대 절대적인 열의 합계 R.
  2. norm(R,Inf) 는 최대 절대 행 합의 R.
  3. norm(R,2)max(svd(R)).

1-규범과 무한 규범의 행렬은 계산에 비슷한 방법으로,따라서 될 것으로 예상된 비슷한 비용. 컴퓨팅 sum 통해 행 또는 열의,그리고 최대의 결과,매우 저렴합니다.

2-의 표준 매트릭스 반면에 필요한 유일한 값을 분해하는 훨씬 더 비싸다.

서리아 norm 계산 벡터 규범이다. 계산 행렬의 표준,사용 opnorm.

을 계산하는 벡터의 표준의 행렬에서는 MATLAB,사용 vecnorm (이후 R2017b). 을 계산하는 규범의 벡터화 행렬,사용 norm(R(:)).


PS:진짜 문제는 이유는 무한 표준에 줄리아 그래서 속도가 느립니까? 그것이 있어야보다 저렴 1-표준보다 훨씬 저렴 2-하고 있습니다.

2021-11-22 16:12:19

BenchmarkTools 다음과 같@ColinTBowers 점,시간은 다음과 같습니다:1-규범=17ms,2-규범=23ms,inf 규범=29ms. 그것은 아닙니다 극적으로 느리로 시간에 질문입니다. 로에 대한 왜 그렇지 않은 더 빠르고,그것은 다음과 같 1-규범 및 2-표준 전화 전문 블라스 메서드 반면,inf 표준은 일반적인 줄리아를 구현합니다.
Sundar R

흥미롭게도,무한 규범은 2.3x 보다 느리게 분명 maximum(abs, R).
Oscar Smith

github.com/JuliaLang/julia/pull/43190 이러한 것을 고칠 수 있습니다.
Oscar Smith

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................