Problem with an algorithm
8 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Antonio Spiere
am 7 Okt. 2020
Kommentiert: Mathieu NOE
am 8 Okt. 2020
Hey guys,
I wanted to build an algorithm which should be able to combine different options till a treshold F.
C = sort([4,1,10,6],2);
[numRows,numCols] = size(C);
F = 7;
O= 1;
So now there should be a new matrix U that should look like this:
U(1) = 1 + 1*4; -- the first one standts for the value one in C
U(2) = 1 + 2*4;
U(3) = 1 + 3*4; -- now the treshold of 2*F is reached and it continues with the new number of C = 6
U(4) = 1+ 1*6;
U(5) = 1+2*6;
when all options with C = 1 are calculated the algorithm should continue with the next value of C. In this case 4
U(n) = 4+ 1*1;
U(n+1) = 4+ 2*1;
And so on.
I came up with this:
for i = 1:numCols
while (O > 1) && (N(t) < 2*F)
for t = 1:numCols
N(t) = C(i) + 1 * C(i);
O = O-1;
end
end
end
Any idea how to solve this? This is driving me crazy
4 Kommentare
Mathieu NOE
am 7 Okt. 2020
ok , it's a bit better now
still I need to understand your logic... so can you please confirm / comment my assumptions
let's put in a more general form : U(n) = C(i) + k*C(j)
- n is the current indice of the main loop (while condition) : goes from 1 to end of validity of while condition
- k may differ from n , depends if threshold is reached or not
- i and j indexes are also independant - a contrario from what your code shows. so the first C term is not the same as the second one.
Question : why in the first iteration it starts with C = 4 in U(1) = 1 + 1*4 and not with the first value of C ( C = 1) , it does not follows the same logic as after, once you reach : when all options with C = 1 are calculated the algorithm should continue with the next value of C. In this case 4
U(n) = 4+ 1*1;
U(n+1) = 4+ 2*1;
In this case the "first" C term is updated (1 => 4) , but the second C term restarts at 1 .
so I don't understand the difference in the logic... but you have probably good resons for it ?
Akzeptierte Antwort
Mathieu NOE
am 7 Okt. 2020
hi again
i think I have something for you. I ended up doing it completly different : compute all combinations but keep only the ones that fullfill the threshold criteria. Was much simpler than doing aerobatics with multiple conditions statements.
This is the output of my code : (code is in attachement)
N( 1) = 1+1 * 4
N( 2) = 1+2 * 4
N( 3) = 1+3 * 4
N( 4) = 1+1 * 6
N( 5) = 1+2 * 6
N( 6) = 1+1 * 10
N( 7) = 4+1 * 1
N( 8) = 4+2 * 1
N( 9) = 4+3 * 1
N( 10) = 4+4 * 1
N( 11) = 4+5 * 1
N( 12) = 4+6 * 1
N( 13) = 4+7 * 1
N( 14) = 4+8 * 1
N( 15) = 4+9 * 1
N( 16) = 4+1 * 4
N( 17) = 4+2 * 4
N( 18) = 4+1 * 6
N( 19) = 6+1 * 1
N( 20) = 6+2 * 1
N( 21) = 6+3 * 1
N( 22) = 6+4 * 1
N( 23) = 6+5 * 1
N( 24) = 6+6 * 1
N( 25) = 6+7 * 1
N( 26) = 6+1 * 4
N( 27) = 6+1 * 6
N( 28) = 10+1 * 1
N( 29) = 10+2 * 1
N( 30) = 10+3 * 1
3 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Matrix Indexing 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!