Hi everyone,
so i have written some code which goes like this:
function caTable = makeCaTable(caCM)% creates a table with information about the frames(coordinates of the
% centroids and the total number of cells in the frame)
Frame = {};PosX = {};PosY = {};NumberOfCells = {};for i = 1:size(caCM,2) C = chop(caCM{1,i},0); for j = 1:size(C,1) Frame{end+1,1} = i; PosX{end+1,1} = C(j,1); PosY{end+1,1} = C(j,2); if(j == 1) NumberOfCells{end+1,1} = size(C,1); else NumberOfCells{end+1,1} = '-'; end end end % write the table
caTable = table(Frame, PosX, PosY, NumberOfCells);
it works and gives me the results i want. But now i want to preallocate the variables. I thought I do it like this:
[nrows,ncols] = cellfun(@size,caCM);rows = sum(nrows);Frames = cell(rows,1);PosX = cell(rows,1);PosY = cell(rows,1);NumberOfObjects = cell(rows,1);
But if i do so i cant use my for loop the way i wrote it, since it would always put the values at the end of the preallocated matrices. But if i simply use:
Frames(j,1) = i
my table will not have all the fields. I really don't know how i can fix this. Maybe some of you could help me with that.
Thank you very much!
Best Answer