Матрица 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

Я не совсем понимаю все ваши переменные, поэтому я не могу поместить их непосредственно в вашу функцию, но вы, вероятно, можете поместить их туда где-нибудь.

Другие вопросы по тегам