2013-10-30 95 views
1

我想將整數向量轉換爲邏輯矩陣。這是我想要做的。假設矢量的大小爲M,最大元素爲A.輸出應該是一個大小爲MxA的邏輯矩陣,其中每列的值v_i從第1列到第(v_i-1)爲0,並且從列V-I至A.這裏有一個例子:MATLAB:向量到邏輯矩陣的無環轉換

3 
4 
4 
1 

輸出應該是:

0 0 1 1 
0 0 0 1 
1 1 1 1 
1 1 1 1 

我可以用一個循環做到這一點很容易,但有一個循環,更低的方式來做到這一點在MATLAB?

回答

3

簡單。首先定義你的數據:

vector = [3; 4; 4; 1]; 
M = length(vector); 
A = 4; 

然後(使用bsxfun):

output = bsxfun(@ge, 1:A, vector(:)); 

或者(與repmat):

output = repmat(1:A,M,1) >= repmat(vector(:),1,A); 
+0

哦不錯,我真不是簡單的思維吧條款:) – ahmadh