1

我希望用向量填充一个 nxn 矩阵。我有以下内容:

[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

我期望 size(b(1,1)) = 1 3 因为 b 中的每个元素都应该是长度为 3 的向量。有人能告诉我哪里出错了吗?非常感谢。

4

2 回答 2

3

You are overriding the value of b in the loop. Try:

[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
于 2012-07-02T12:29:58.840 回答
2

有几种方法可以b用向量填充 n×n 数组:

(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);
于 2012-07-02T13:06:14.660 回答