Filter löschen
Filter löschen

How to determine repeated value in row of an array

3 Ansichten (letzte 30 Tage)
Chau Chin Haw
Chau Chin Haw am 14 Dez. 2020
Bearbeitet: Ive J am 15 Dez. 2020
I have a data of
1 1 2 2
2 2 3 1.5
3 3 4 2.2
4 4 5 6.8
5 4 6 1
6 5 7 5.1
7 6 8 2.5
8 7 9 3.3
9 8 10 2.8
10 8 11 1.4
11 10 12 3.2
12 11 13 2.7
13 12 14 1.9
14 13 15 4.5
How can i create a code to have it to check on each row if the value is repeated.
As an example:
The value that i wanted to check is on row 4 column row 2 and 3.
The value selected is 4 and 5. These value are then being compared with the value of the row below it.
If the value in the following row which is row 5 have value that are same with the value above which is 4, it will continue this comapring process with the value 4 and 6 with another row until there is no other identical appear.
After identifying all repeative value, the value in column 4 of those repeative value are being added together.
  4 Kommentare
Ive J
Ive J am 14 Dez. 2020
Can you provide an example along with algorithm steps? For instance:
% Step 1
A = [1 1 2 2;
3 2 1 4];
% step 2
% what to do
% step N
Chau Chin Haw
Chau Chin Haw am 15 Dez. 2020
%step 1
A =
[1 1 2 2
2 2 3 1.5
3 3 4 2.2
4 4 5 6.8
5 4 6 1
6 5 7 5.1
7 6 8 2.5
8 7 9 3.3]
%Step 2
%Check value in row 4 with the value in row 5
%If there are similar value in row 5 (value 4), comparing continue with row 5 and 6
%If none, end
%Step 3
%Sum all the value in column 5 of the repeative value
Sum = 6.8+1+5.1+2.5+3.3;

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Ive J
Ive J am 15 Dez. 2020
Bearbeitet: Ive J am 15 Dez. 2020
Your arrays is N*4 and not N*5, so you may want to modify your example. Also add/modify conditions if necessary.
A = [1 1 2 2
2 2 30 1.5
3 20 4 2.2
4 4 5 6.8
5 4 6 1
6 20 70 5.1
7 6 30 2.5
8 7 9 3.3]
vals = [4 ,20, 30, 70, 5];
sumVals = nan(numel(vals), 1); % NaN for values not satisfying the condition
for i = 1:numel(vals)
checkMe = find(any(A == vals(i), 2)); % find all rows containing vals(i)
if ~isempty(diff(checkMe)) && all(diff(checkMe) == 1)% if vals(i) appreas in consecutive rows and appears at least twice
sumVals(i, 1) = sum(A(checkMe, end)); % sum over last column
end
end
sumVals
10.0000
NaN
NaN
NaN
7.8000

Weitere Antworten (0)

Kategorien

Mehr zu Elementary Math 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!

Translated by