Raise a scalar to a descending series of powers in an array
18 ビュー (過去 30 日間)
古いコメントを表示
I'm trying to compute a series of powers of a scalar.
This seems to work but the result is not what I expected:
0.8^1:3
ans =
0.8000 1.8000 2.8000
I expected:
ans =
0.8000 0.6400 0.5120
(It looks like it is returning 0.8:3)
This therfore doesn't work either:
0.8^3:-1:1
ans =
1×0 empty double row vector
Neither does this
0.8^(3:-1:1)
Error using ^ (line 51)
Incorrect dimensions for raising a matrix to a power. Check that the matrix is square and the power is a scalar. To perform elementwise matrix powers, use '.^'.
Neither of these work
0.8^[3 2 1]
0.8^[1 2 3]
Error using ^ (line 51)
Incorrect dimensions for raising a matrix to a power. Check that the matrix is square and the power is a scalar. To perform elementwise matrix powers, use '.^'.
So, how do I compute the scalar to the power of a series of descending values?
0 件のコメント
採用された回答
その他の回答 (2 件)
Steven Lord
2020 年 8 月 17 日
編集済み: Steven Lord
2020 年 8 月 17 日
Your 0.8^1:3 example doesn't do what you think it does.
>> x1 = 0.8^1:3
>> x2 = [0.8^1 0.8^2 0.8^3]
x1 =
0.8 1.8 2.8
x2 =
0.8 0.64 0.512
The power operations in MATLAB are at operator precedence level 2 and 3, while the colon operator is at level 7. So your expression (which I used to define x1 above) is the equivalent of:
(0.8^1):3
What you want is to wrap the colon expression in parentheses. But if you try making that change alone you receive an error (line breaks added to avoid scroll bars.)
>> x3 = 0.8^(1:3)
Error using ^ (line 51)
Incorrect dimensions for raising a matrix to a power.
Check that the matrix is square and the power is a scalar.
To perform elementwise matrix powers, use '.^'.
So since you want to perform elementwise matrix powers, use the .^ operator instead of the ^ operator.
>> x4 = 0.8.^(1:3)
x4 will match x2.
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Creating and Concatenating Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!