How to add specific rows that meet a condition?
1 次查看(过去 30 天)
显示 更早的评论
Hi,
I have two column vectors dim 98x1 one is the unique values of an array (A) and the other is the percentage that these values occur (B). What I am trying to get is to sum the percentile values that are between 0-1 of the unique values and then 1-2 and so on. So that I have the percentile values of occurrence for everything =<1, =<2, ..., =<26 Here is an example of what I am trying to do,
%
A = [0.1 0.5 1.0 1.2 1.6 2.0]' % The unique values
B = [50.3 3.0 2.5 2.4 1.8 1.4]' % The percentile values
C = [55.8 5.6] % The percentile values that are in the range specified
So far I have been working with the following loop
%
for i = 1:size(A,1)
for j = 0:25
if A <= i & A >= j
C(i,j) = sum(B(j,i);
end
end
end
Not entirely sure I I am going the right way about this. If anyone has any advice it would be greatly appreciated.
0 个评论
回答(2 个)
Roger Stafford
2016-4-15
编辑:Roger Stafford
2016-4-15
N = 1:26;
C =sum(bsxfun(@times,bsxfun(@le,A,N),B));
2 个评论
Roger Stafford
2016-4-16
编辑:Roger Stafford
2016-4-16
@Thomas: My apologies. Forget that solution I gave you. My head was not on straight this morning. There is a valid method using 'histc' and 'accumarray', but you might as well use obvious methods with for-loops for this unless your data is very large. (Let me know if you want to know the 'histc-accumarray' method.)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!