50 個のファイルのセットを matlab ワークスペースに読み込みました。(からdata1
までdata50
)。それぞれのサイズは です721*176
。各データの最初の 144 行だけを抽出し、別のデータに格納したいと考えています。
例えば:
newData1 = data1(1:144,:);
私の質問は、ループを使用してすべてのデータを一度に処理するにはどうすればよいですか?
それはあなたがデータをどのように保存するかに依存します。
あなたの場合の最良の方法は3D配列です:
まず、配列を割り当てます(@HighPerformanceMarkが正しく指摘しているように):
data = zeroes(721,176,50);
次に、値を入力します。
data(:,:,1) = read('firstFile.bmp');
data(:,:,2) = read('secondFile.bmp');
...
data(:,:,50) = ...
その場合は、次の選択を使用してください。
data(1:144,:,:)
データを格納するもう1つのもっともらしい方法は、セル配列です。3D配列は異なるサイズの行列を処理できないため、これは便利です。
data{1} = read('firstFile.bmp');
data{2} = read('secondFile.bmp');
...
この場合、以下を使用しますcellfun
。
selection = cellfun(@(x) {x(1:144,:)}, data);
それでもデータを配列ではなく個別の変数に格納することを主張する場合は、を使用できますeval
。これは最も推奨されない方法です。
for i=1:50
eval(' selection{i} = data%d',i)
end