Calculation of summation with filtering positive and negative values
9 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi
I have one matrix with u(i,j,t).
I need calculate sum of the variable like this in each time step.i,j have not folloed an approprate pattern for example the same i or j
sum(t)= u(167,148,t)+u(167,139,t)+u(167,165,t)+u(167,164,t)+u(167,163,t)+..
But,I need an algorithm to seperate positive and negative values.
for example in each time step check the u: if u is positive: sumpositive(t)=u(167,158,t)+u(167,159,t)+u(167,160,t)+u(167,161,t)+u(167,162,t)
if u is negative : sumnegative(t)=iu(167,158,t)+u(167,159,t)+u(167,160,t)+u(167,161,t)+u(167,162,t)
Thanks
0 Kommentare
Antworten (1)
the cyclist
am 24 Apr. 2023
% Set seed for reproducibility
rng default
% Some pretend data
u = randn(4,4,3);
% Identify positive u
uIsPos = u >= 0;
% Sum the positive u
sumpositive = sum(u.*uIsPos,3)
% Sum the negative u
sumnegative = sum(u.*~uIsPos,3)
4 Kommentare
the cyclist
am 25 Apr. 2023
for t = 1:length(time)
sumpositive(t) = (u(167,158,t).*(u(167,158,t)>0)) + (u(167,159,t).*(u(167,159,t)>0)) + (u(167,160,t).*(u(167,160,t)>0));
sumnegative(t) = (u(167,158,t).*(u(167,158,t)<0)) + (u(167,159,t).*(u(167,159,t)<0)) + (u(167,160,t).*(u(167,160,t)<0));
end
which can be simplified to
for t = 1:length(time)
sumpositive(t) = sum(u(167,158:160,t).*(u(167,158:160,t)>0));
sumnegative(t) = sum(u(167,158:160,t).*(u(167,158:160,t)<0));
end
Siehe auch
Kategorien
Mehr zu Surface and Mesh Plots finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!