3D ベクトルs1
(nmax、mmax、ntimeSTEPS) があります。各時間ステップj
(つまり、3 番目の次元の各値) で、最初の 2 つの次元のすべての要素を取り、 に与えるベクトルを取得したいと考えていsprintf
ます。ただし、sprintf
サイクル内の場合は非常に遅いです。マニュアルを確認したところ、線形インデックスで直接行う方法はないようです。または、何か不足していますか?を使うことしか考えられませんが、のreshape
ようなものs1(:,j)
が一番上になりますが、それはMATLABの仕組みではありません。やった:
nmax = 800;
mmax =400;
nmax_x_mmax = nmax*mmax;
ntimeSTEPS = 1;
charINPUT = cell(nmax_x_mmax,1);
s1 = ones(nmax,mmax,ntimeSTEPS)*1234;
tic
for j=1:ntimeSTEPS
%... other stuff
input=reshape(s1(:,:,j),nmax_x_mmax,1);
for kk=1:length(input)
charINPUT{kk} = sprintf('%6.3f',input(kk));
end
%... other stuff (collecting movie frames etc)
end
toc
これは、私の i7 2.2 GHz では、1 回のステップで 5.09 秒かかります。私はアニメーションを作ろうとしていますが、これは非常に遅いです。配列のサイズを大きくすると、基本的にスタックします。線形インデックスでこれを行うための提案はありますか?