我希望用向量填充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的向量。有人可以告诉我哪里出错了吗?非常感谢。
答案 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);