I would like to filter out some vectors based on a percent of aggregate
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
I would like to filter some time series based on their weight of the overall aggregate. The weights are to be calculated based on the derived aggregate/components of the second last element in each vector (x1=20, x2=2, x3=62) The end result would be to extract the complete time series vectors satisfying the threshold. I would also appreciate suggested improvements to the code:
Threshold = *.2*
x1=[5 10 20 15 40 20 25]';
x2=[8 25 15 50 41 2 15]';
x3=[32 42 30 52 33 62 77]';
x=[x1 x2 x3];
sumx=sum(x')';
sumx=[sumx sumx sumx];
perx=x./sumx
perx=perx(4,:);
perx =
0.2381 0.0238 0.7381
Here x2 should be deleted since it falls below the threshold and a new object containing x1 and x3 vectors should get created.
x=[x1 x3];
3 Commenti
Risposta accettata
Image Analyst
il 22 Set 2013
Modificato: Image Analyst
il 22 Set 2013
See if this is what you want:
thresholdPercent = 0.2
x1=[5 10 20 15 40 20 25]';
x2=[8 25 15 50 41 2 15]';
x3=[32 42 30 52 33 62 77]';
% Sum them up
sumx = sum([x1,x2,x3], 2)
x=[];
% Get the value that each column will be compared to.
Threshold = thresholdPercent * sumx(end-1)
% Tack on x1 if it's above the threshold.
if x1(end-1) > Threshold
fprintf('Adding on x1:\n');
x = [x, x1]
end
% Tack on x2 if it's above the threshold.
if x2(end-1) > Threshold
fprintf('Adding on x2:\n');
x = [x, x2]
end
% Tack on x3 if it's above the threshold.
if x3(end-1) > Threshold
fprintf('Adding on x3:\n');
x = [x, x3]
end
% Get the means:
meanAcrossColumns = mean(x, 2)
3 Commenti
Image Analyst
il 22 Set 2013
It just prints out some debugging stuff to the command window - it's optional and you can remove it if you want.
Più risposte (1)
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!