Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
你好我有以下情况
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中实现这一点?谢谢!
试试这个(x作为传入值的向量):
x
j = reshape(h(x+1,:).',1,[]);
上面使用x+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
如您所知,Matlab 的索引从 1 开始,因此您需要将 1 添加到索引 0、1、2 以获取 h 的行标识符。所以如果输入是'index'
j = h(index+1,:)
然后,对于下一个索引
j = [j h(index+1,:)]
等等。
如果传入值为 x,您可以执行以下操作:
g = h.' j = g(1:(x+1)*size(h,2))