Проблемы, для которых Matlab хорош - PullRequest
2 голосов
/ 09 декабря 2011

Позвольте мне спросить, является ли использование Matlab для моей конкретной проблемы бессмысленным или некоторые люди делают подобное.

У меня есть начальная последовательность S(1), где каждый член является 2D-точкой.Я создаю новую последовательность S(2), вставляя новую точку термина p между каждыми двумя последовательными точками p(i) и p(i+1).Где p - это функция f из 4 кратных точек ближайших индексов на S(2).А именно,

p= f( p(i-1),p(i),p(i+1),p(i+2) )

И функция f написана в стиле, подобном С, но не в чистом стиле матричного языка.Таким же образом я повторяю генерацию новой более длинной последовательности S(i+1) до S(m).

Вышеприведенное может быть для вас неопределенным, но, пожалуйста, дайте несколько советов.Я не спрашиваю, является ли Matlab лучшим выбором для этой проблемы, но не будет ли эксперт использовать Matlab для такой проблемы или кто-то другой.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 09 декабря 2011

Это сильно зависит от f.Если f может быть эффективно закодирован в Matlab или вы готовы потратить время на его MEX (расширение Matlab C), то Matlab будет работать эффективно.

Код можно векторизовать так:

f = @(x) mean(x,3);
m=3;
S{1}=[1,2,3;4,5,6];
for i=2:m
    S{i} = cat(3,...
        [[0;0] S{i-1}(:,1:end-2)],...
        S{i-1}(:,1:end-1),...
        S{i-1}(:,2:end),...
        [S{i-1}(:,3:end) [0;0]]);
    S{i} = [f(S{i}) [0;0]];
    S{i} = cat(3,S{i-1},S{i});
    S{i} = permute(S{i},[1 3 2]);
    S{i} = S{i}(:,:);
    S{i}(:,end)=[];
end
1 голос
/ 09 декабря 2011

Да, Matlab кажется подходящим для такой задачи.Для структуры данных вашего списка последовательностей рассмотрите возможность использования массивов ячеек .Вы можете иметь S в качестве массива ячеек, и S{1} будет соответствовать вашему S(1) и снова может быть массивом ячеек точек или обычной матрицей, если точки являются просто парами или тройками чисел.

В качестве альтернативы, Python, на мой взгляд, особенно силен, когда речь идет о всех видах последовательностей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...