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

19 visualizaciones (últimos 30 días)
Keita Abe
Keita Abe el 21 de Oct. de 2022
Comentada: Keita Abe el 22 de Oct. de 2022
代入式の右辺の配列の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 comentarios
Atsushi Ueno
Atsushi Ueno el 22 de Oct. de 2022
回答できないですね。質問の求める方法は無く、質問のコード例が必要最小限の書き方だと思います。
下記方法が考えられますが最後に余分なデータが残り、結局 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 el 22 de Oct. de 2022
コメントありがとうございました。コード例もありがとうございます。現状そのような方法がないこと、納得しました。

Iniciar sesión para comentar.

Respuestas (0)

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2022b

Community Treasure Hunt

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

Start Hunting!