短縮版
concatMap
MATLABでどのようにできますか?私は、一連のより小さく、異なるサイズのベクトルから単一のベクトルを構築しようとしています。私は私ができることを知っています:
result = [];
for i=1:N
result = [result nextPart(i)];
end
しかし、これは速度に深刻な影響を与えるため、よりスマートな方法が必要ですconcatMap
。
ロングバージョン
ブロックの対角線を返すMATLAB関数を作成しようとしています。たとえば、ブロックがある場合:
1 2 4
3 5 7
6 8 9
その後、counterDiagonals(block)
を返す必要があり[1 2 3 4 5 6 7 8 9]
ます。
ブロックの単一の対角線を見つける関数があります。つまり、counterDiagonal(x, 3)
を返し[4 5 6]
ます。
したがって、counterDiagonals
はと同じくらい単純である必要がconcatMap counterDiagonal(x, i) (1:N)
ありN
ます(2*length(block)-1)
。これをMATLABで効率的に行うにはどうすればよいですか?