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

时间:2016-02-07 13:02:03

标签: matlab matrix octave 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]

3 个答案:

答案 0 :(得分:2)

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

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

抱歉我的英文

答案 1 :(得分:0)

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检查该号码是否可被2整除(即均匀)并将其作为logical index加入a

答案 2 :(得分:0)

标题是关于选择矩阵的行,而问题的主体是关于向量的元素...... 使用 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