How to replace half the number of specific element in an array?
2 次查看(过去 30 天)
显示 更早的评论
Hello every one,
I have a row vector having 8236 columns, out of which 863 columns have a value 4. I want to replace 431 of the columns by a value 2. For simplicity, I am giving a vector having only 23 columns
A=[1 2 3 4 4 1 2 4 4 3 4 4 4 2 1 3 4 4 4 2 1 4 4]
Here, in this vector, there are 12 columns having a value 4. How to replace half the columns by a value 2?
Any help will be appreciated.
0 个评论
采纳的回答
Stephen23
2018-6-18
编辑:Stephen23
2018-6-18
To change random columns:
>> A=[1 2 3 4 4 1 2 4 4 3 4 4 4 2 1 3 4 4 4 2 1 4 4]
A =
1 2 3 4 4 1 2 4 4 3 4 4 4 2 1 3 4 4 4 2 1 4 4
>> nnz(A==4)
ans = 12
>> idx = find(A==4);
>> num = numel(idx);
>> A(idx(randperm(num,ceil(num/2)))) = 2
A =
1 2 3 2 2 1 2 4 4 3 2 4 2 2 1 3 2 4 4 2 1 2 4
>> nnz(A==4)
ans = 6
0 个评论
更多回答(2 个)
KALYAN ACHARJYA
2018-6-18
编辑:KALYAN ACHARJYA
2018-6-18
A=[1 2 3 4 4 1 2 4 4 3 4 4 4 2 1 3 4 4 4 2 1 4 4];
for i=1:length(A)/2;
if A(i)==4
A(i)=2;
end
end
0 个评论
Ameer Hamza
2018-6-18
编辑:Ameer Hamza
2018-6-18
Here is one possible solution
A=[1 2 3 4 4 1 2 4 4 3 4 4 4 2 1 3 4 4 4 2 1 4 4];
index = find(A==4);
randomIndex = randperm(length(index));
A(index(randomIndex(1:end/2))) = 2;
it will randomly select which columns to change.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!