それぞれサイズが2つの列ベクトルがあります<nx1>
。config
ベクトルには数値721,722,723 and 724
のみが含まれlength
、サイズのベクトルには<nx1>
数値のみが含まれます。サイズの行列Zを作成する必要があり<3x3n>
ます。
note:matrices a,b,c and d are each <3x3> matrices.
ここでルールを言葉で表現するのは難しいので、最初に例を挙げてみましょう。
length=[1 2 3],config=[721 722 723],a=eye(3),b=ones(3),c=magic(3);
z=[ 1 0 0 2 2 2 24 3 18 0 1 0 2 2 2 9 15 21 0 0 1 2 2 2 12 27 6]
つまり、config(i)が722で、length(i)が2の場合、2*matrix_aをz行列に追加します。
私は次のことをしました:
z=[0 0 0;0 0 0;0 0 0];
for i=1:3
[~,col]=size(z);
if config(i)==721
z(:,col+[1:3])=length(i)*a
end
if config(i)==722
z(:,col+[1:3])=length(i)*b
end
if config(i)==723
z(:,col+[1:3])=length(i)*c
end
end
z=z(:,4:end)
しかし、より良いループレスのベクトル化された方法はありませんか?