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

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 日

1 投票

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 日

0 投票

A=[1 2;3 4];
sum(A(:).^2)
ans = 30
vecnorm(A(:))^2
ans = 30
norm(A,'fro')^2
ans = 30

カテゴリ

ヘルプ センター および File ExchangeMatrix Indexing についてさらに検索

タグ

質問済み:

2024 年 1 月 28 日

編集済み:

2024 年 1 月 28 日

Community Treasure Hunt

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

Start Hunting!

Translated by