unable to print out the all possible answers, Out of memory and Maximum variable size allowed by the program is exceeded.

2 views (last 30 days)
Hey all, I have a code here to generate all the possible combinations of a binary sequence consisting m zeroes and n one. Input : m and n value, output the corresponding combinations of the binary sequence. When I input small values of m and n, the code works fine, but when i input some big values of m and n. The matlab output Out of memory. Type HELP MEMORY for your options.
Error in unique>uniqueR2012a (line 623) groupsSortA = sortA(1:numRows-1,:) ~= sortA(2:numRows,:);
Error in unique (line 147) [varargout{1:nlhs}] = uniqueR2012a(varargin{1},logical(flaginds(1:5)));
Error in randbinary (line 19) x1=unique(perms([zeros(1, m) ones(1, n)]), 'rows')
Error using perms (line 24) Maximum variable size allowed by the program is exceeded. The following is my code(helped by someone in matlab answers) to print out all the unique possible combinations: x1=unique(perms([zeros(1, m) ones(1, n)]), 'rows') Could anyone tell me why it is Out of memory and Maximum variable size allowed by the program is exceeded? and how to fix it.
  5 Comments
Image Analyst
Image Analyst on 2 Dec 2014
Bear, that's not an answer to Sean's "Why" - you merely repeated what you think you want to do. What he's getting after is that perhaps it's possible to do what you want to do in a different way that doesn't require all of the possible combinations being in memory at exactly the same time. Plus you didn't answer what m and n are.

Sign in to comment.

Accepted Answer

matt dash
matt dash on 2 Dec 2014
The maximum allowed variable size is very large. There is no practical reason to print all combinations if it exceeds this size. You would just have a very very large amount of text that will be useless to both people and computers.
In any case, the reason it's printing nothing is that the max variable size is being exceeded by the PERMS function, so the error occurs before it starts printing the output of the UNIQUE function.
Rather than using unique(perms()) you should be using the "C" output option of nchoosek, which does the same thing without all the overhead. But as the documentation notes, this will still generally only work when you have fewer than 15 items in your sequence.

More Answers (0)

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!