矩阵的扫描元素

时间:2018-07-04 20:02:43

标签: algorithm matlab matrix

我需要编写代码,以对角线移动从最左边和最下面的元素到右边扫描矩阵。

例如,矩阵[1 2 3; 4 5 6]它应该返回4,5,1,6,2,3

任何想法从哪里开始?

2 个答案:

答案 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的解决方案,但它只是一个班轮!