2016-09-16 9 views
0

例えば、zeros(100)を作成することができます。しかし、私は行58と列59のエントリが1になることを願っています。しかし、これを行うには一時変数と複数行が必要です。Matlab:特定の場所に1を持つゼロ行列を作成する

a。この行列をMとする。これを一行でどうすればいいですか? M = ....


P.S.

b。さらに良いことに、ゼロ行列の2つ以上のエントリを1にしたいことがあります。 もう一度これを行うにはどうすればよいですか?

できる場合は、もちろん、私はそれらを追加することができます。しかし、1を使ってゼロ行列の記入項目を行う特別な関数はありますか?

+1

M(58,59)= 1 ....この仕事はありませんか? – Umar

+1

2つのコマンドを使用すると何が問題になりますか? 'M = 0(100,100)'そして 'M(58,59)= 1'? –

+0

あなたの第2部のM(M == 0)= 1は役に立ちます – Umar

答えて

7

まず、1行の式が必ずしも最も効果的というわけではありません。また、読んだり理解したりするのは難しいかもしれません。これを行うための

一つの方法は、以下の例では、

[5,2](行5、列2)におけるものと10×10のゼロ行列を作成し、[7~5] sparseマトリックスを

を使用することによるものです別の(より高速多分など直感的ではありません)代替を使用することです「フル」1


に疎行列から、それを変換するため

full(sparse([5 7],[2 5],1,10,10)) 

使用

accumarray([5 2;7 5],1,[10,10]) 

上記の式で直接使用されたインデックス値が1行に取得することを忘れないでください、より良いオプションは別途

points = [5 2; 7 5] 

または多分を、それらを作成することです

rowIdx = [5 7]; 
colIdx = [2 5]; 
+0

非常にありがとうございます。 – kyle

+1

@kwwこれがあなたの質問に答えるなら、それをそれを受け入れることを検討するべきです。連続して質問をし、回答を受け入れないことは、SOを使用する最良の方法ではありません。 – excaza

関連する問題