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

76 vues (au cours des 30 derniers jours)
Keita Abe
Keita Abe le 21 Oct 2022
Commenté : Keita Abe le 22 Oct 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 commentaires
Atsushi Ueno
Atsushi Ueno le 22 Oct 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 le 22 Oct 2022
コメントありがとうございました。コード例もありがとうございます。現状そのような方法がないこと、納得しました。

Connectez-vous pour commenter.

Réponses (0)

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Produits


Version

R2022b

Community Treasure Hunt

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

Start Hunting!