2012-07-02 101 views
1

我希望用矢量填充nxn矩陣。我有以下幾點:matlab用矢量填充陣列

[x y] = meshgrid(a); 
for i:size(a,1) 
    for j:size(a,2) 
     b = [x(i,j),y(i,j) 0]; 
    end 
end 

我覺得可以在這裏是有點幼稚,因爲我B的向量元素中期待各種不同的數字。相反,我得到b的元素都是平等的。也

size(b) = 1 3 
size(b(1,1)) = 1 1 

我期待尺寸(B(1,1))= 1 3,如B中的每個元素應該是長的矢量3.有人可以告訴我在哪裏出了問題?非常感謝。

+0

'b {i,j} = [x(i,j),y(i,j)0];'? – Junuxx

+0

嗨Junuxx - 當我嘗試這個我得到?單元格內容分配給非單元格數組對象。 – brucezepplin

回答

3

您正在覆蓋循環中的值b。 嘗試:

[x y] = meshgrid(a); 
b = zeros(size(a,1) size(a,2) 3); 
for i:size(a,1) 
    for j:size(a,2) 
     b(i,j,:) = [x(i,j),y(i,j) 0]; 
    end 
end 
+0

嗨安德烈,當我嘗試我得到:???作業有更多的非單身人士的尺寸比非單身下標.... – brucezepplin

+0

@brucezepplin,你的代碼中的'a'是什麼?另請參閱我的修訂代碼 –

+0

嗨安德烈 - 一個簡單的圖像,我正在閱讀:a = imread('circle.png'),然後a = a(:,:,1); – brucezepplin

2

有幾個方法,你如何能填補n乘N陣列b與向量:

(1)您可以創建一個n乘n乘3陣列,使squeeze(b(i,j,:))返回向量i,j作爲3×1陣列:

a=1:3, 
[x y] = meshgrid(a); 
b = cat(3,x,y,zeros(size(x)); 

(2)可以創建的n乘n單元陣列,使得b{i,j}返回向量i,j

a=1:3, 
[x y] = meshgrid(a); 
b = arrayfun(@(x,y)[x,y],x,y,'uni',false);