generate an array according to some sequence
1 次查看(过去 30 天)
显示 更早的评论
Suppose I have an array [4 2 1 3] (length = 4) and I want to generate another array of length 6(= 0.5*4*(4-1)).
The vlaues of the new array represents the relationship between i and j, for i < j.
If i precedes j than (i,j) = 1; and 0, otherwise.
That is [(1,2) (1,3) (1,4) (2,3) (2,4) (3,4)] = [0 1 0 1 0 0].
Is there any way out to evade using loops?
Thanks in advance.
0 个评论
采纳的回答
Walter Roberson
2011-4-10
[v,idx] = sort(A);
T = triu(bsxfun(@lt,idx.',idx),1);
B = T(logical(triu(ones(length(A)),1))).';
3 个评论
Walter Roberson
2011-4-10
The T(logical...) part returns a column, and then the .' changes that to a row.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!