Hello good day.
I have a problem, which I hope you can give me support or advice: I have the following column vector of 20 elements (the real one is 1000 elements): A=[6.9563; 6.9563; 6.9563; 6.9563; 6.9563; 7.4917; 5.8343; 5.3075; 5.8713; 7.1312; 11.2175; 11.2175; 11.2175; 11.2175; 11.2175; 10.4278; 10.9766; 11.2685; 9.4748; 11.3789] The question is how to compare (greater than>) the first 5 elements with the second 5 elements of vector A. 6.9563 6.9563 6.9563 6.9563 6.9563 Compare with 7.4917 5.8343 5.3075 5.8713 7.1312 and after third 5 elements with the fourth 5 elements of the vector A 11.2175 11.2175 11.2175 11.2175 11.2175 Compare with 10.4278 10.9766 11.2685 9.4748 11.3789 And so on automatically, if the vector A is 1000 elements
I hope you understand me and help me. Greetings.

5 Kommentare

David Fletcher
David Fletcher am 6 Mär. 2018
I'd probably extract every other 5 five elements from A into B compact A down and then just compare with A>B.
Jos (10584)
Jos (10584) am 6 Mär. 2018
What should the output look like? Can you give a numeric example with integers (whole numbers) to make life easier.
Ricardo Gutierrez
Ricardo Gutierrez am 6 Mär. 2018
A=[2 2 2 2 2 3 6 3 4 5 1 1 1 1 1 2 3 4 5 6] compare 2 2 2 2 2 with 3 6 3 4 5 and then compare 1 1 1 1 1 with 2 3 4 5 6 The expected result is B=[1 2 3 4 5 2 3 4 5 6] The second 5 values are greater than the first. the fourth 5 values are greater than the third. The real column vector have 600 values.
Jos (10584)
Jos (10584) am 6 Mär. 2018
I fail see the relationship between the values of B and the values of A ...
Ricardo Gutierrez
Ricardo Gutierrez am 7 Mär. 2018
You're right I put them back A=[2 2 2 2 2 3 6 3 4 5 1 1 1 1 1 2 3 4 5 6]........ 2 2 2 2 2 3 6 3 4 5 in the second 5 values; at least one value is greater than 2 therefore the values pass:3 6 3 4 5.....in the following values 1 1 1 1 1 2 3 4 5 6 the last 5 values at least one value is greater than 1 therefore the values pass:2 3 4 5 6....so it would be in vector B....B=[3 6 3 4 5 2 3 4 5 6 ]

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Fangjun Jiang
Fangjun Jiang am 7 Mär. 2018
Bearbeitet: Fangjun Jiang am 7 Mär. 2018

0 Stimmen

What if none of the element in second 5 elements is greater than the first 5 elements? The code below might be easier to understand.
A=[2 2 2 2 2 3 6 3 4 5 1 1 1 1 1 0 0 0 0 0];
A=transpose(reshape(A,10,[]));
B=A(:,6:10);
A=A(:,1:5);
C=B>A;
ind=any(C,2);
B(~ind,:)=A(~ind,:)
B =
3 6 3 4 5
1 1 1 1 1

Weitere Antworten (3)

David Fletcher
David Fletcher am 6 Mär. 2018
Bearbeitet: David Fletcher am 6 Mär. 2018

0 Stimmen

ind=repmat(logical([0 0 0 0 0 1 1 1 1 1]),1,100)
b=a(ind)
a(ind)=[]
c=a>b
Fangjun Jiang
Fangjun Jiang am 6 Mär. 2018

0 Stimmen

This example should give you an idea
A=transpose(reshape(rand(20,1),5,[]))
B=diff(A)
C=B>0
C should tell you the relation
Jos (10584)
Jos (10584) am 7 Mär. 2018
Bearbeitet: Jos (10584) am 7 Mär. 2018

0 Stimmen

A = [2 2 2 2 2 3 6 3 4 5 1 1 1 1 1 2 3 4 5 6]
AA = reshape(A,5,[])
dA = diff(AA,[],2)
ix = all(dA>0)
ix = 2*find(ix(1:2:end))
B = reshape(AA(:,ix),1,[])

2 Kommentare

Ricardo Gutierrez
Ricardo Gutierrez am 7 Mär. 2018
Your code shows as a result:..B = 2 2 2 2 2 1 1 1 1 1...and must be:...B = 3 6 3 4 5 2 3 4 5 6....thank you very much for your work and time
Jos (10584)
Jos (10584) am 7 Mär. 2018
Oh, I subtracted a 1 from ix by mistake! Corrected

Melden Sie sich an, um zu kommentieren.

Kategorien

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by