For matrix A you cannot do: A.^2(:)

조회 수: 1 (최근 30일)
Eric
Eric 2024년 1월 28일
편집: Catalytic 2024년 1월 28일
I have a matrix A=[1 2;3 4]. I want to sum the squares of the elements in the matrix. So I tried
sum(A.^2(:))
I cannot do this. The problem is A.^2(:). How do I solve this? Parenthesis around A.^2 does not help.
A workaround is
sum(reshape(A.^2,[],1))
Related to this is for example:
1+A(:)
This is OK. But this is not:
A+1(:)
Parenthesis around A+1 does not work.
  댓글 수: 2
Paul
Paul 2024년 1월 28일
A=[1 2;3 4];
1 + A(:)
ans = 4×1
2 4 3 5
% A + 1(:) not sure what this is expected to do?
% maybe
A + 1
ans = 2×2
2 3 4 5
% or
A(:) + 1
ans = 4×1
2 4 3 5
Eric
Eric 2024년 1월 28일
The same as 1+A(:).

댓글을 달려면 로그인하십시오.

채택된 답변

Matt J
Matt J 2024년 1월 28일
편집: Matt J 2024년 1월 28일
You cannot apply ()-indexing to mathematical expressions, function calls, or literal constants, only to variables. So, in your case, you would do,
sum(A(:).^2)
Note that the result of other indexing expressions are considered variables for this purpose, so these are okay:
s.a={[5,1]}; s.b=[10,3,2];
s.a{1}(:)
ans = 2×1
5 1
s.b(:)
ans = 3×1
10 3 2

추가 답변 (1개)

Catalytic
Catalytic 2024년 1월 28일
편집: Catalytic 2024년 1월 28일
A=[1 2;3 4];
sum(A(:).^2)
ans = 30
vecnorm(A(:))^2
ans = 30
norm(A,'fro')^2
ans = 30

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by