column
は、各列が後者に依存する手順を使用して計算されると仮定しています。
column = zeros(733, 1); % Might not need this. Depends on you code.
all_columns = zeros(xdim, ydim); % Pre-allocate memory (always do this)
% Note that the first dimension is usually called x,
% and the second called y in MATLAB
overlap = cell(7, 1);
overlap(:) = {zeros(xdim, ydim)}; % Pre-allocate memory
for ii = 1:numel(overlap) % numel is better than length
for jj = 1:ydim % ii and jj are better than i and j
% several_lines_of_code_to_calculate_column
column = something;
all_columns(:, jj) = column;
end
overlap{ii} = all_columns;
end
あなたはこのようoverlap
内の変数にアクセスすることができます:overlap{1}(1,1);
ない場合は、これに行うことができる非常に高い改善があります。これは、最初のセルの最初の要素を取得します。 overlap{2}
は、2番目のセルで行列全体を取得します。
あなたは7つの変数が必要だと指定しました。あなたのコードは、セルが異なる変数(var1
、var2
...)に割り当てるよりも優れていることを知っていることを暗示しています。良い!さまざまな変数を持つソリューションは悪い悪いです。
セル配列を使用する代わりに、3D配列を使用することもできます。これは例えば後で処理を高速化するかもしれません。
これは次のようになります。
column = zeros(733, 1); % Might not need this. Depends on you code.
overlap = zeros(xdim, ydim, 7) % Pre-allocate memory for 3D-matrix
for ii = 1:7
for jj = 1:ydim
% several_lines_of_code_to_calculate_column
column = something;
all_column(:, jj, ii) = column;
end
end
あなたの質問を言い換えるするには、あなたが*** overlap' 'に格納された値にアクセスする方法***、求めている、あなたが求めているものということでしょうか? –
列ベクトルを2次元配列に連結するのではなく、セル配列を使用する特別な理由はありますか?それらはすべて同じサイズであるように見えます。 – beaker
MATLABでは、セルから行列への変換が数多くあります。 'column_fill'のサイズや' column1'にどう対応するのか分からないので、言い表せません。しかし、これは問題ではないかもしれませんか?私はちょうどあなたがエラーメッセージを提供して以来これを仮定しました。 – patrik