matlab - 从二维零件创建单维数组

时间:2010-01-26 17:50:05

标签: matlab octave

您好我有以下情况

      h = [0,1,1,1;
           0,0,0,0;
           1,1,1,1];

我将检查输入值,范围在0到h的行数之间,即在这种情况下为2。所以我的选择是0,1,2。

现在我想创建一个单维数组(让我们将其命名为j),如下所示

每当输入值为0时

j = [0,1,1,1]

下次如果传入值为1

然后j = [0,1,1,1,0,0,0,0]

等等......如何在matlab中实现这一目标?谢谢!

3 个答案:

答案 0 :(得分:1)

Matlab,如你所知,索引为1所以你需要在索引0,1,2中加1来获得h的行标识符。所以如果输入是'索引'

j = h(index+1,:)

然后,为下一个索引

j = [j h(index+1,:)]

等等。

答案 1 :(得分:1)

尝试此操作(使用x作为传入值的向量):

j = reshape(h(x+1,:).',1,[]);

上面使用x+1作为索引来选择行的副本,然后将transposesreshapes结果放入单行向量中。这是一个测试:

>> h = [0 1 1 1; 0 0 0 0; 1 1 1 1];
>> x = [0 0 0];
>> j = reshape(h(x+1,:).',1,[])

j =

     0     1     1     1     0     1     1     1     0     1     1     1

答案 2 :(得分:0)

如果传入的值是x,您可以执行以下操作:

g = h.'
j = g(1:(x+1)*size(h,2))