Matlab:翻转列矩阵中的特定行

Matlab:翻转列矩阵中的特定行,matlab,Matlab,我想翻转列矩阵的某些行。 比如, 让矩阵A为: 1 2 **3** **4** **5** **6** 7 8 9 10 我只想把第3行翻转到第6行,这样矩阵A变成 1 2 **6** **5** **4** **3** 7 8 9 10 我尝试了flip和flipdim命令,但它似乎翻转了整个矩阵。这里没有有效的方法,也就是说,没有本机函数只告诉解释器翻转了哪些值。所以你需要复制它们 % create matrix size: (10x2) Mat = repmat((1:11).',1,

我想翻转列矩阵的某些行。 比如,

让矩阵A为:

1
2
**3**
**4**
**5**
**6**
7
8
9
10
我只想把第3行翻转到第6行,这样矩阵A变成

1
2
**6**
**5**
**4**
**3**
7
8
9
10
我尝试了flipflipdim命令,但它似乎翻转了整个矩阵。

这里没有有效的方法,也就是说,没有本机函数只告诉解释器翻转了哪些值。所以你需要复制它们

% create matrix size: (10x2)
Mat = repmat((1:11).',1,2);

% define section (index-wise)
sctIDX = [3   6
          10 11];
% now loop over the sections
for i = 1:size(sctIDX)
    % create logical vector for indexing rows
    lg = false(size(Mat,1),1);
    lg(sctIDX(i,1):sctIDX(i,2)) = true;

    % flip matrix section
    Mat(lg,:) = flip(Mat(lg,:),1); 
    % the second argument is the dimension: 1=rows, 2=columns
end
输出是

1   1
2   2
6   6  %***
5   5  %***
4   4  %***
3   3  %***
7   7
8   8
9   9
11  11 %***
10  10 %***

如果
a=[1:10]”
与您的示例一样,为什么不:

 a(3:6)=flip(a(3:6))


>> a =

 1
 2
 6
 5
 4
 3
 7
 8
 9
10

谢谢你的回答。它起作用了。我为相同的应用了for循环,但这要容易得多。谢谢。谢谢你花时间回答。这很有帮助。我知道我是新来的,我可能会犯错误。我不介意在这个问题上投反对票,但如果投反对票的人花时间来解释为什么投反对票,那么像我这样的人和其他不熟悉在这里发帖的人可能会从反对票中吸取教训。谢谢你的帮助。我想这篇评论应该放在你原来的帖子@Smalbro93;)下面