Матрица Matlab с различными размерами строк
Я хотел бы создать матрицу с различными размерами строк, но я не уверен, с чего начать.
У меня есть функция, которая производит временные подписи 5000 фотонов. Не все эти фотоны будут давать значимые временные подписи. Эта функция отбрасывает эти подписи. Я также повторяю эту функцию 5000 раз, что означает, что вектор моей колонки будет иметь разные размеры на каждой итерации, но не более 5000.
function photon_FWHM = processFates(string,num)
for i = 1:num
FATES = 'FATES';
str = int2str(i);
filename = strcat(FATES,str);
timestamp = Timestamp(filename);
if timestamp == 0
continue;
end;
photon_timestamps(:,i) = timestamp;
end;
Всего у меня будет 5000 столбцов с некоторым количеством строк, которые меняются в зависимости от столбца. Я не уверен, что хорошее решение.
2 ответа
Вы также можете попробовать использовать массивы клеток. Массивы ячеек могут быть немного медленнее, но они могут выполнять свою работу.
photon_timestamps{i} = vector;
тогда каждый элемент photon_timestamps{i} может быть разного размера.
также ваш блок
if timestamp == 0
continue;
end;
нужна другая часть верно?
Я думаю, что матрицы в MATLAB должны быть прямоугольной формы (m x n). Вы могли бы ввести не значения для NaN
в качестве заполнителя. Обычно я делаю это, определяя размеры матрицы во вложенных for
петли и отбросить элементы, поместив NaN
,
for i = 1:rows
for j = 1:5000
if timestamp != 0
yourmatrix(i, j) = timestamp;
else
yourmatrix(i, j) = NaN;
end
end
end
Я не совсем понимаю все ваши переменные, поэтому я не могу поместить их непосредственно в вашу функцию, но вы, вероятно, можете поместить их туда где-нибудь.