Предполагая, что следующие два предположения, вы можете повторите попытку, указанную ниже -
- Продолжить
adding
, а не multiplying
.
- Все final элементов в
column-3
, чтобы достичь как минимум 72
.
Подход № 1 [С bsxfun
]
stopn = 72; %// stop adding till this number
add_factor = 8; %// Add factor to be added at each iteration to get to 72
ntimes = ceil(max((stopn - x(:,3))/add_factor)) %// no. of iterations needed
%// Get the starting 2d version of matrix to be added to x iteratively
x_add_2d = zeros(size(x)); %//
x_add_2d(:,3) = add_factor;
%// Get the complete version of matrix to be added (in 3d), then add to x
x_add_3d = bsxfun(@plus,x,bsxfun(@times,x_add_2d,permute([0:ntimes],[1 3 2])))
%// Concatenate along rows to form a 2D array as the final output
out = reshape(permute(x_add_3d,[1 3 2]),size(x_add_3d,1)*(ntimes+1),[])
Подход № 2 [С repmat
]
stopn = 72; %// stop adding till this number
add_factor = 8; %// Add factor to be added at each iteration to get to 72
ntimes = ceil(max((stopn - x(:,3))/add_factor)); %// no. of iterations needed
out = repmat(x,[ntimes+1 1]) %// replicated version of x
add_col3 = repmat([0:8:ntimes*8],size(x,1),1) %// column-3 values to be added
out(:,3) = out(:,3) + add_col3(:) %// add those for the final output
Пример запуска -
x =
52 43 57
41 40 48
41 49 50
out =
52 43 57
41 40 48
41 49 50
52 43 65
41 40 56
41 49 58
52 43 73
41 40 64
41 49 66
52 43 81
41 40 72
41 49 74
Умножено на 8 или добавлено с помощью 8? И какой элемент в столбце-3 должен достигнуть 72, любой один элемент? Должно ли оно достигать ровно 72, или, может быть, оно достигает * как минимум * 72? Я думаю, что лучший образец 'x' будет иметь разные элементы в столбце-3, а не все нули, как у вас. – Divakar
Третья колонка должна быть добавлена по 8 каждый раз, когда матрица повторяется ... до 72. То есть, для первого повторения в четвертой строке третий столбец будет 8 8 8. Для седьмого ряда, то есть второго повторения, третья колонка будет 16 16 16 и т. Д. До тех пор, пока эта колонна не достигнет 72. –
Не могли бы также ответить на мой второй вопрос. что, если бы я хотел добавить константу в столбец 1 и столбец2 с каждым повторением матрицы. То есть, если моя константа, которую нужно добавить, равна 5, то моя первая колонка во втором повторении матрицы равна 5 10 12, а вторая - 5 13 11. В третьем повторении первая колонка становится 10 15 17, а вторая колонка становится равной 10 18 16 и так далее. В течение всего этого процесса моя третья колонка продолжается с добавлением 8 каждый раз (как вы ответили) –