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

조회 수: 21 (최근 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!