2015-03-07 2 views
0

У меня есть вектор-столбец x, состоящий из 4-х элементов, как я могу сгенерировать все возможные комбинации значений, которые x может принимать так, что x * x 'меньше или равно определенному значению? обратите внимание, что значения x положительны и целые.генерирование комбинаций в Matlab

Для того, чтобы быть более ясным: входом количеством элементов вектора-столбца х и порог, выходом являются различными возможными комбинациями значений х уважающих тем факт, что х * х»< = порог Пример: порог равен 4, а x - вектор столбца 4 * 1 ..... выход равен x = [0 0 0 0]. [0 0 0 1], [1 1 1 1] ......

ответ

2

Смотрите, если это работает для вас -

threshold = 4; 
A = 0:threshold 
A1 = allcomb(A,A,A,A) 
%// Or use: A1 = combvec(A,A,A,A).' from Neural Network Toolbox 
combs = A1(sum(A1.^2,2)<=threshold,:) 

Пожалуйста, обратите внимание, что код перечисленных выше использует allcomb from MATLAB File-exchange.

Выход -

combs = 
    0  0  0  0 
    0  0  0  1 
    0  0  0  2 
    0  0  1  0 
    0  0  1  1 
    0  0  2  0 
    0  1  0  0 
    0  1  0  1 
    0  1  1  0 
    0  1  1  1 
    0  2  0  0 
    1  0  0  0 
    1  0  0  1 
    1  0  1  0 
    1  0  1  1 
    1  1  0  0 
    1  1  0  1 
    1  1  1  0 
    1  1  1  1 
    2  0  0  0 
+0

Ошибка использования ==> двойной преобразования в два раза из ячейки не представляется возможным. –

+0

@AmiraAkra Наконец-то это сработало, да? – Divakar

+0

Как я могу обобщить этот код? Я имею в виду, если порог является случайным значением, и размер x может измениться? –

Смежные вопросы