配列の1つの要素だけ​をスカラーとして変数​に直接代入したい

19 次查看(过去 30 天)
Keita Abe
Keita Abe 2022-10-21
评论: Keita Abe 2022-10-22
代入式の右辺の配列の1つの要素だけを指定して直接左辺の変数に代入するにはどうすればできるでしょうか?
たとえば次のようなコードを書いた場合,一旦行列の変数(B)を介しているのでそれを省いて直接A(i)=(rand(3)^(i)*rand(3,1),1)のような形で書きたいです。
for i = 1:5
B = rand(3)^(i)*rand(3,1);
A(i) = B(1);
end
  2 个评论
Atsushi Ueno
Atsushi Ueno 2022-10-22
回答できないですね。質問の求める方法は無く、質問のコード例が必要最小限の書き方だと思います。
下記方法が考えられますが最後に余分なデータが残り、結局 A(1:5)とアクセスする必要があります。
for i = 1:5
A(i:i+2) = rand(3)^(i)*rand(3,1)
end
A = 1×3
0.5153 0.7113 0.5870
A = 1×4
0.5153 1.5374 1.0471 1.2612
A = 1×5
0.5153 1.5374 3.9947 4.8464 4.6945
A = 1×6
0.5153 1.5374 3.9947 3.5763 5.1415 4.5717
A = 1×7
0.5153 1.5374 3.9947 3.5763 0.6056 0.3200 0.7157
メモリには困らない時代なので、計算結果を広げて必要箇所を拾っていく(不要部分を捨てていく)形が良いと思います。
arrayfun(@(i) rand(3)^(i)*rand(3,1), 1:5, 'uni', false)
ans = 1×5 cell array
{3×1 double} {3×1 double} {3×1 double} {3×1 double} {3×1 double}
cell2mat(ans)
ans = 3×5
0.2319 0.9178 2.7108 0.5854 4.1601 0.3789 0.5266 4.0728 0.1230 1.8014 0.4240 1.8209 1.7666 0.5663 4.6434
ans(1,:)
ans = 1×5
0.2319 0.9178 2.7108 0.5854 4.1601
Keita Abe
Keita Abe 2022-10-22
コメントありがとうございました。コード例もありがとうございます。現状そのような方法がないこと、納得しました。

请先登录,再进行评论。

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

产品


版本

R2022b

Community Treasure Hunt

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

Start Hunting!