アプリ版:「スタンプのみでお礼する」機能のリリースについて

for文を使用して算出した行列からある行列以外をまとめて出したいのですが何か方法はありますか?
A=(1,2,3,4,5)
for n=1:5
B=A
B(1,n)=0
B=(1,2,3,4,5)
B=(0,2,3,4,5)
B=(1,2,3,4,5)
B=(1,0,3,4,5)
...
この場合は[1,2,3,4,5]を取り除きたいです。
私はif B~=Aを考えてみたのですがうまくいきませんでした。

A 回答 (1件)

こんばんは。


>私はif B~=Aを考えてみたのですがうまくいきませんでした。
上のやり方ではないですが、予め、Bを
B =
0 2 3 4 5
1 0 3 4 5
1 2 0 4 5
1 2 3 0 5
1 2 3 4 0

という行列を作りたいとし、最初に、中身がゼロの5行5列の行列Bを用意し、
そこに、一か所のみをゼロとした変形Aを代入していきます。

****ここから、プログラム*******
B=zeros(5,5); ← 5行5列のゼロ行列(中身はゼロでも、1でも好きな数値でも可能)
A=[1, 2, 3, 4, 5];  ← ここは、変更してはいけない行列初期値A
for n=1:5 ← ここからfor ループ
B(n,:)=A; ← ":"は列一行の意味なので、n=1の時、B行列の1行目にAを代入
B(n,n)=0;     ← 右側のnは列を意味しているので、そこにゼロを入れる
end
A          ← Aを表示
B          ← Bを表示
******ここまで プログラム******

*******実行結果******
A =
1 2 3 4 5
B =
0 2 3 4 5
1 0 3 4 5
1 2 0 4 5
1 2 3 0 5
1 2 3 4 0


質問のBの順序の行列から、if B~=Aで排除する方が良ければ、その様に組み替えるだけですが、
上のプログラムより、ちょっと複雑にする必要があります。。。
    • good
    • 2
この回答へのお礼

回答ありがとうございます何か応用できないか頑張ってみます。

お礼日時:2018/12/10 18:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!