Splitting an array in every possible combination
4 ビュー (過去 30 日間)
古いコメントを表示
Hello,
I am attempting to split an array in all possible combination. I have illustrated it in the figure given below.
Depending on the number of rows, I wish to split the given array in all possible combinations.
One of the condition is Number of rows <= Number of elements in given array
After toiling for 3 days, I am posting this here.
Kindly guide me on how to accomplish this task.
Thanks for your time and valuable guidance.
12 件のコメント
Jonas
2022 年 7 月 14 日
@Selva Kumar, i know that it gives only one solution, i also wrote that it gives one at a time. but all of the solutions are at least valid. it should just be a help how the problem could finally be solved, that's why the code is a comment and not in the answer section
Jonas
2022 年 7 月 14 日
one 'solution' could be to run the script multiple times and collect unique solutions. but we still do not know restrictions on the number of columns
採用された回答
Voss
2022 年 7 月 15 日
編集済み: Voss
2022 年 7 月 15 日
I believe this will do the required "splitting" of the array:
format compact
x = 1:6;
disp(split_x(x,1));
disp(split_x(x,2));
disp(split_x(x,3)); % scroll down to see them all
disp(split_x(x,4)); % scroll down to see them all
disp(split_x(x,5)); % scroll down to see them all
disp(split_x(x,6));
function x_split = split_x(x,n_rows)
N = numel(x);
n_cols = N-n_rows+1;
split_idx = nchoosek(1:N-1,n_rows-1);
n_combos = size(split_idx,1);
split_idx = [zeros(n_combos,1) split_idx N*ones(n_combos,1)];
n_split = diff(split_idx,1,2);
x_split = zeros(n_rows,n_cols,n_combos);
for ii = 1:n_combos
for jj = 1:n_rows
x_split(jj,1:n_split(ii,jj),ii) = x(split_idx(ii,jj)+(1:n_split(ii,jj)));
end
end
end
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!