我正在寻找一种简单的方法来获得二进制矩阵的所有组合。我已经尝试了函数Number.prototype.padDigit = function () {
return (this < 10) ? '0' + this : this;
}
function CalculateTotal() {
var t1 = "00.00";
var mins = 0;
var hrs = 0;
$('input.time').each(function () {
t1 = t1.split('.');
var t2 = $(this).val().split('.');
console.log(Number(t1[1]) + Number(t2[1]))
mins = Number(t1[1]) + Number(t2[1]);
minhrs = Math.floor(parseInt(mins / 60));
hrs = Number(t1[0]) + Number(t2[0]) + minhrs;
mins = mins % 60;
t1 = hrs.padDigit() + '.' + mins.padDigit()
console.log(t1);
});
return t1;
}
$("#addTimes").on('click', function () {
$('#gtot_st').val(CalculateTotal());
});
//Check for an input change on any one of the text boxes with a class of "time"
$(".time").on('input', function() {
$('#gtot_st').val(CalculateTotal());
})
,但没有得到正确的结果。
我有例如填充1和-1的矩阵N x N.当N = 2时,将存在2 ^ 4种可能的1和-1组合,如
perms()
当我使用perms()时,我不会得到第一个矩阵。
我该如何解决?
答案 0 :(得分:5)
您可以将0
和2^(N^2)-1
之间的所有数字表示为二进制数字,然后重新塑造:
N = 2;
v = (1:2^(N^2))-1;
A = dec2bin(v)' - '0'; %'// Or use: decimalToBinaryVector(v)';
A(A==0) = -1;
A = reshape(A,N,N,2^(N^2));
答案 1 :(得分:-1)
一个简单的黑客攻击如下:
v = [1 -1 1 -1];
P = perms(v);
for ii = 1:size(P,1)
A = reshape(P(ii,:),2,2)
end
导致:
A =
-1 -1
1 1
...
结果中仍有一些相同的矩阵应该删除。
答案 2 :(得分:-1)
我认为我找到了解决问题的方法
L = 2;
N = L^2;
v = cell(N,1);
for k = 1:N
v{k} = linspace(-1,1,2);
end
ne=numel(v);
x=cell(ne,1);
[x{1:ne,1}]=ndgrid(v{end:-1:1});
p=reshape(cat(ne+1,x{:}),[],ne);
F = cell(length(p),1);
for k=1:length(p)
F{k} = reshape(p(k,:),L,L);
end