0
或者更一般地說,從1到n的整數列表轉化爲零和一維的n維向量?在Octave/Matlab中,如何將[1,2,4,8]變成[1 1 0 1 0 0 0 1]?
或者更一般地說,從1到n的整數列表轉化爲零和一維的n維向量?在Octave/Matlab中,如何將[1,2,4,8]變成[1 1 0 1 0 0 0 1]?
A = [ 1, 2, 4, 8];
B = false(1,A(end));
B(A) = true;
回報:
B =
1 1 0 1 0 0 0 1
和可選:B = double(B)
,如果你需要它作爲雙打。
或:
B = zeros(1,A(end));
B(A) = 1;
但是。
你爲什麼用'numel(A)'初始化'B'?在給出的例子中,您將初始化一個1x4向量,這不是要求的。只需'B(A)= true'或'B(A)= 1'就足夠了。 – carandraug
@carandraug:'numel(A)'是無稽之談,那就對了。但我會保持初始化,以確保所有其他值爲'0' /'false' – thewaywewalk
所有其他值默認爲false或零,您不必擔心它。如果你真的想初始化'B',我仍然認爲你不需要(對其他索引**的賦值是**初始化),使用'max(A(:))'。由於任務將強制調整大小,因此初始化到錯誤的地方實際上會更糟糕。 – carandraug