How to compare 2 rows with specific row gap
4 次查看(过去 30 天)
显示 更早的评论
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
0 个评论
采纳的回答
Guillaume
2020-2-28
编辑:Guillaume
2020-2-28
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 个评论
Guillaume
2020-3-1
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
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!