How to compare 2 rows with specific row gap

4 views (last 30 days)
I have a matrix called myMatrix. In the below code I generated a 256 bit response by comparing ROW1 with ROW2, ROW3 with ROW4 etc.
How can I modify the code to generate a 256 bit response by comparing ROW1 with ROW17, ROW2 with ROW18 etc.
output_bit=zeros(256,193);
for s=1:193;
p=1;
for q=1:2:512;
if myMatrix(q,s) > myMatrix(q+1,s);
output_bit(p,s)=1;
else
output_bit(p,s)=0;
end
p=p+1;
end
end

Accepted Answer

Guillaume
Guillaume on 28 Feb 2020
Edited: Guillaume on 28 Feb 2020
In matlab loops are rarely needed and often make the code more complicated. Case in point, your original code comparing pairs of consecutive rows could be replaced by just:
output_bits = MyMatrix(1:2:end, :) > MyMatrix(2:2:end, :);
With your new question, what should happen after you've compared row 16 with row 32? Compare row 17 with row 33 or skip to comparing row 33 with row 49?
  8 Comments
Guillaume
Guillaume on 1 Mar 2020
With no answer to my question "What should be done if the matrix height is not a multiple of 32", I'm assuming that the matrix height is a multiple of 32. In that case:
assert(mod(size(MyMatrix, 1), 32) == 0, 'Matrix height is not a multiple of 32');
temp_matrix = reshape(MyMatrix, 16, [], size(MyMatrix, 2)); %reshape into 16 rows, and move columns into the 3rd dimension
output_bits = reshape(temp_matrix(:, 1:2:end, :) > temp_matrix(:, 2:2:end, :), [], size(MyMatrix, 2)); %compare pair of columns along 3rd dimension (originally 2nd) and reshape back into matrix
Farhan K
Farhan K on 1 Mar 2020
It worked man!!! Wow thanks a lot bro :D

Sign in to comment.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!