特定の列に0を並べる​方法,1行おきに減算​する方法について

512行46列の行列があるA
512行30列の行列があるBがあります.
このうち,Bの29列目を抜き出しCを作ります.
やりたいことはAの行列の奇数列をBの29列目の行列で減算することです.
その手順として,①や②が必要なのではないかと考えております.
①Cの2列目には0を512行並べたいです.
うまく説明できないのですが自分のやり方(C=zeros(512,2:2))だと1列目も全て0となるような形となってしまいます.
②Aの行列の1行目,3行目,5行目...と1行おきに減算をしたいです.
よろしくお願いいたします.

 Accepted Answer

Kenta
Kenta on 7 Jul 2020

1 vote

A=rand(512,46);
B=rand(512,30);
C=B(:,29);
A2=A-C;
A(:,1:2:end)=A2(:,1:2:end);
②を1行おきではなく、すべてのAに対して実行し、最後にその結果をもともとのAの奇数列のみに代入する形でやってみました。以上でいかがでしょうか。

4 Comments

Taiga Miyashita
Taiga Miyashita on 7 Jul 2020
Kenta様
ご教授いただきありがとうございます.
そのようなやり方があるとは思いつきませんでした.
自分の考えていた結果を得ることが出来ました.ありがとうございました!
Akira Agata
Akira Agata on 8 Jul 2020
計算途中の行列CやA2を作成せずに、直接結果を求めることもできます。
A = rand(512,46);
B = rand(512,30);
A(:,1:2:end) = A(:,1:2:end) - B(:,29);
Taiga Miyashita
Taiga Miyashita on 8 Jul 2020
Akira Agata様
ご教授いただきましてありがとうございます.
直接結果を求める方が整理されてスマートに見えますね.
求める結果が同じでも様々なやり方があるのだと実感しました.
皆さんのご協力,本当にありがとうございました.
Kenta
Kenta on 8 Jul 2020
Akira Agataさま
ありがとうございます。確かにこちらのほうがスマートですね。
Miyashitaさま
解決したようでよかったです。

Sign in to comment.

More Answers (0)

Categories

Find more on 数学 in Help Center and File Exchange

Tags

Asked:

on 7 Jul 2020

Commented:

on 8 Jul 2020

Community Treasure Hunt

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

Start Hunting!