我需要编写代码,以对角线移动从最左边和最下面的元素到右边扫描矩阵。
例如,矩阵[1 2 3; 4 5 6]它应该返回4,5,1,6,2,3
任何想法从哪里开始?
答案 0 :(得分:1)
由于您未展示自己的尝试,因此我将让您弄清楚这段代码的工作原理:-)
x = [1 2 3; 4 5 6];
m = bsxfun(@minus, (1:size(x,1)).', 1:size(x,2));
[~, ind] = sort(reshape(m, 1, []));
result = x(flip(ind));
您可能需要阅读
答案 1 :(得分:1)
使用spdiags *的解决方案:
x = [1 2 3; 4 5 6];
result = x(nonzeros(flipud(spdiags(reshape(1:numel(x),size(x))))));
*它的速度可能不及@LuisMendo的解决方案,但它只是一个班轮!