0

你好我有以下情况

      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中实现这一点?谢谢!

4

3 回答 3

1

试试这个(x作为传入值的向量):

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

上面使用x+1作为索引来选择行的副本,然后将结果转置并重新整形为单个行向量。这是一个测试:

>> 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
于 2010-01-26T18:43:01.880 回答
1

如您所知,Matlab 的索引从 1 开始,因此您需要将 1 添加到索引 0、1、2 以获取 h 的行标识符。所以如果输入是'index'

j = h(index+1,:)

然后,对于下一个索引

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

等等。

于 2010-01-26T18:00:01.847 回答
0

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

g = h.'
j = g(1:(x+1)*size(h,2))
于 2010-01-26T17:58:01.617 回答