如何将矩阵的奇数行和偶数行提取到 scilab 中的两个单独的矩阵中?

How do I extract the odd and even rows of my matrix into two separate matrices in scilab?

我对 scilab 语法很陌生,似乎无法找到一种方法将矩阵的偶数元素和奇数元素提取到两个单独的矩阵中,假设有一个矩阵 a:

a=[1,2,3,4,5,6,7,8,9]

如何制作另外两个矩阵 bc 就像 b=[2 4 6 8]c=[1 3 5 7 9]

a=[1,2,3,4,5,6,7,8,9];
b = a(mod(a,2)==0);
c = a(mod(a,2)==1);

b =
     2     4     6     8
c =
     1     3     5     7     9

mod to check whether the number is divisible by 2 or not (i.e. is it even) and use that as a logical index变成a

您可以通过调用行和列索引来分隔矩阵:

a=[1,2,3,4,5,6,7,8,9];
b=a(2:2:end);
c=a(1:2:end);

[2:2:end] 表示 [2,4,6,...length(a)][1:2:end]=[1,3,5,...length(a)]。所以你可以对每个矩阵使用这个技巧,例如,如果你有一个矩阵 a=[5,4,3,2,1] 并且你想获得前三个元素:

a=[5,4,3,2,1];
b=a(1:1:3)
b=
   1  2  3 
% OR YOU CAN USE
b=a(1:3)

如果您需要元素 3 到 5:

a=[5,4,3,2,1];
b=a(3:5)
b=
   3  2  1

如果你想要元素 5 到 1,即反向:

a=[5,4,3,2,1];
b=a(5:-1:1);
b=
  1  2  3  4  5

题目是关于选择矩阵的行,而问题的主体是关于向量的元素... 使用 Scilab,对于行只需执行

a = [1,2,3 ; 4,5,6 ; 7,8,9];
odd = a(1:2:$, :);
even = a(2:2:$, :);

示例:

--> a  = [
  5  4  6
  3  6  5
  3  5  4
  7  0  7
  8  7  2 ];

--> a(1:2:$, :)
 ans  =
  5  4  6
  3  5  4
  8  7  2

--> a(2:2:$, :)
 ans  =
  3  6  5
  7  0  7