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

bの各要素は長さ3のベクトルである必要があるため、size(b(1,1))= 1 3を期待しています。どこが間違っているのか誰かに教えてもらえますか?どうもありがとう。

4

2 に答える 2

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
于 2012-07-02T12:29:58.840 に答える
2

bn行n列の配列をベクトルで埋める方法はいくつかあります。

(1)n x n x 3の配列を作成してsqueeze(b(i,j,:))、ベクトルを3x1の配列として返すことができますi,j

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

b{i,j}(2)ベクトルを返すようにn行n列のセル配列を作成できます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 に答える