動かしたい変数が2つ​ある際にどのようにす​べきか教えていただき​たいです。

10 次查看(过去 30 天)
KOGA DAIKI
KOGA DAIKI 2022-12-9
评论: KOGA DAIKI 2022-12-12
行列bの値を取り出し、aの行列に代入したいと考えています。
この際に、bの行列は(1323000,1)の行列で、bの行列を(1,1),(1000,1),(2000,1)...(1323000,1)と行の値を変化させながら、ここで取り出した値を
aの行列(1323,1)の(1,1),(2,1),(3,1)...(1323,1)のそれぞれに代入したいと考えています。
つまり
   a(1,1) = b(1,1)
a(2,1) = b(1000,1)
a(3,1) = b(2000,1)
      ・
a(1323,1) = b(1323000,1)
というように代入したいです。
ご回答頂けると幸いです。よろしくお願いします。

采纳的回答

Atsushi Ueno
Atsushi Ueno 2022-12-9
编辑:Atsushi Ueno 2022-12-9
>動かしたい変数が2つある際にどのようにすべきか
それらの関連性を見極めれば、一方だけ動かして他方を数式で求める事が出来ます
b = zeros(1323000,1); % bの行列は(1323000,1)の行列
for k = 0:1323
a(k+1,1) = b(max(1,k*1000),1); % bの行列(1,1),(1000,1),(2000,1)...(1323000,1)
end % ⇒aの行列(1324,1)の(1,1),(2,1),(3,1)...(1324,1)に代入
1,1000,2000, ... , 1323000は、1323個ではなく1324個あります。また最初(1000-1)だけ間隔が1000ではなく999になります。
MATLABのインデックスは1始まりなので、max関数で最初の0だけ1に変更しています。
また、for文を回さなくても下記の様に同じデータを得る事が出来ます
a2 = b(max(1,0:1000:1323000),1); % これ1行でもOK!
  1 个评论
KOGA DAIKI
KOGA DAIKI 2022-12-12
ご回答ありがとうございます。
動かしたい数同士の関係に着目するという観点がなかったため、非常に参考になりました。
無事動かしたいプログラムを動かすことができました。
ありがとうございました。

请先登录,再进行评论。

更多回答(0 个)

类别

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

标签

产品


版本

R2020b

Community Treasure Hunt

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

Start Hunting!