Add element to the matrix in one sentence
3 ビュー (過去 30 日間)
古いコメントを表示
I have a 2D matrix, say A=zeros(10,10). I want to add a vector of number to the matrix. I have the index of the elements, but it is repeated. E.g. the index [5,3,2,5,3,100,5] and the value is some random [1,2,3,4,5,6,7]. I then want to add 1 into 5th element of A, 2 into 3rd element and so on. How do I do this in one line?
4 件のコメント
採用された回答
Andrei Bobrov
2017 年 6 月 14 日
編集済み: Andrei Bobrov
2017 年 6 月 14 日
A=zeros(10,10);
ii = [5,3,2,5,3,100,5];
var = 1:7;
[ii,ib] = unique(ii);
A(ii) = var(ib);
or
A([5,3,2,5,3,100,5]) = 1:7
3 件のコメント
Andrei Bobrov
2017 年 6 月 14 日
編集済み: Andrei Bobrov
2017 年 6 月 14 日
ii = [5,3,2,5,3,100,5];
var = 1:7;
A = reshape(accumarray(ii(:),var(:),[100 1],@(x){x(:)'}),10,[]);
その他の回答 (1 件)
Guillaume
2017 年 6 月 14 日
編集済み: Guillaume
2017 年 6 月 14 日
If I understood correctly
A = zeros(10,10);
indices = [5,3,2,5,3,100,5];
values = [1,2,3,4,5,6,7];
A = A + reshape(accumarray(indices(:), values(:), [numel(A), 1]), size(A))
would be one way to do it. Alternatively,
[uindices, ~, loc] = unique(indices);
sumvalues = accumarray(loc(:), values(:));
A(uindices) = A(uindices) + sumvalues;
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Creating and Concatenating Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!