- Why do you need this?
- What are m and n?
unable to print out the all possible answers, Out of memory and Maximum variable size allowed by the program is exceeded.
3 次查看(过去 30 天)
显示 更早的评论
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 个评论
Image Analyst
2014-12-2
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.
Stephen23
2014-12-2
Try buying a computer with infinite memory. That usually solves this kind of problem.
采纳的回答
matt dash
2014-12-2
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.
0 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!