您好我有以下情况
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中实现这一目标?谢谢!
答案 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
作为索引来选择行的副本,然后将transposes和reshapes结果放入单行向量中。这是一个测试:
>> 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))