loops

4 visualizzazioni (ultimi 30 giorni)
Pieter
Pieter il 12 Apr 2011
Hello,
I have the following problem in Matlab: Consider dataset a, with the following two columns:
0 / 0
0 / 0
1 / 0
1 / 0
1 / 9
0 / 0
-1 / 0
-1 / 4
0 / 0
My problem is that the value 9 has to be spread equally during the time that column 1 is equal to 1. The same has to be done with the value 4 during the time that column 1 is equal to -1. The result I have to obtain is the following:
0 / 0
0 / 0
1 / 3
1 / 3
1 / 3
0 / 0
-1 / 2
-1 / 2
0 / 0
Thanks,
Pieter
  1 Commento
Oleg Komarov
Oleg Komarov il 12 Apr 2011
What have you done so far?

Accedi per commentare.

Risposta accettata

the cyclist
the cyclist il 12 Apr 2011
Guessing this is homework, but not sure, so I will give you a solid kick in the right direction. Here is part of what you need to do, with a lot of assumptions about things you were not specific about.
A = [0 0; 0 0; 1 0; 1 0; 1 9; 0 0; -1 0; -1 4; 0 0];
indexToOnes = (A(:,1)==1);
numberOfOnes = sum(indexToOnes);
valueToDistribute = max(A(indexToOnes,2));
A(indexToOnes,2) = valueToDistribute/numberOfOnes
It does not handle the -1 part, which maybe you can figure out for yourself.

Più risposte (1)

Oleg Komarov
Oleg Komarov il 12 Apr 2011
A = [0 0
0 0
1 0
1 0
1 9
0 0
-1 0
-1 4
0 0];
A(3:5,2) = 3;
A(7:8,2) = 2;

Categorie

Scopri di più su MATLAB in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by