matlab用向量填充数组

时间:2012-07-02 12:27:24

标签: matlab matrix

我希望用向量填充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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

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

(1)您可以创建一个n×by-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);