find negative values of simple summation. code efficiency
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hello, I have the following statement which must be true: v1_before(1) == v1_transferred_vector(1) + v1_conserved_vector(1)
My goal is to find out which of the two elements on the right side are actually negative. The algebraic sign of "v1_before" is already known, as well as the absolute values of the two elements on the right side.
The indices refer to the x-value of the [x,y] vectors. So i will do exactly the same with (2) / y-values too.
I coded the following. But im wondering whether there is a more elegant and efficient way to do it. Many thanks in advance!!!!
%determine whether + / - for x-values
if v1_before(1) - v1_transferred_vector(1) - v1_conserved_vector(1) == 0 %==0 when difference is smaller then 1e-15/eps
%do nothing, leave them positiv
elseif v1_before(1) + v1_transferred_vector(1)- v1_conserved_vector(1) == 0
v1_transferred_vector(1) = - v1_transferred_vector(1);
elseif v1_before(1) - v1_transferred_vector(1) + v1_conserved_vector(1) == 0
v1_conserved_vector(1) = - v1_conserved_vector(1);
else %v1_before(1) + v1_transferred_vector(1) + v1_conserved_vector(1) == 0
v1_transferred_vector(1) = - v1_transferred_vector(1);
v1_conserved_vector(1) = - v1_conserved_vector(1);
end
6 Kommentare
Rik
am 5 Jan. 2021
If this code only runs once it doesn't matter if it takes 1 ms or 100 ms, but if this code is executed thousands of times in a time-sensitive context, then it does start to matter.
The main point is to spend time optimizing the code that matters. You can spend a few hours here to save a few miliseconds, or spend your time on code that runs often and takes longer to complete.
Antworten (1)
Walter Roberson
am 5 Jan. 2021
M = [1 1; 1 -1; -1 1; -1 -1];
m = M(v1_before(1) == M*[v1_transferred_vector(1); v1_conserved_vector(1)],:);
v1_transfered_vector(1) = m(1)*v1_transfered_vector(1);
v1_conserved_vector(1) = m(2)*v1_conserved_vector(1);
This can be vectorized with a slight bit of work.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Logical 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!