【发布时间】:2016-05-09 00:44:16
【问题描述】:
我想将整数 i 转换为具有第 i 个非零元素的逻辑向量。这可以用1:10 == 2 完成,它返回
0 1 0 0 0 0 0 0 0 0
现在,我想为每一行向量化这个过程。写repmat(1:10, 2, 1) == [2 5]'我希望得到
0 1 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0
但是,这个错误发生了:
使用 == 时出错
矩阵尺寸必须一致。
我可以对这个过程进行矢量化处理吗,或者for 循环是唯一的选择吗?
【问题讨论】:
-
@johnny5 不是,但它的格式不正确且不清楚。下面烧杯的答案阐明了 OP 想要什么,甚至是话题。
-
一般来说,请注意不要将 1 和 0 视为逻辑值。考虑:
>> foo = 1:10; >> foo([1,0,1,0,1,0,1,0,1,0]) Subscript indices must either be real positive integers or logicals. >> foo(logical([1,0,1,0,1,0,1,0,1,0])) ans = 1 3 5 7 9