所以我有以下约束: 在MATLAB中计算总和的快速方法是什么?
如何在MATLAB中以有效的方式写这个?输入是x_mn
,M
和N
。这组B={1,...,N}
和设定U={1,...,M}
我做了这样的(因为我写x
作为follwoing矢量)
x=[x_11, x_12, ..., x_1N, X_21, x_22, ..., x_M1, X_M2, ..., x_MN]
:
%# first constraint
function R1 = constraint_1(M, N)
ee = eye(N);
R1 = zeros(N, N*M);
for m = 1:M
R1(:, (m-1)*N+1:m*N) = ee;
end
end
%# second constraint
function R2 = constraint_2(M, N)
ee = ones(1, N);
R2 = zeros(M, N*M);
for m = 1:M
R2(m, (m-1)*N+1:m*N) = ee;
end
end
通过上面的代码,我会得到一个矩阵A=[R1; R2]
与0-1
,我将有A*x<=1
。
例如,M=N=2
,我都会有这样的事情:
而且,我将创建一个功能test(x)
返回true或false根据x
。
我想获得一些帮助,并优化我的代码。
谢谢。在我的代码中,在得到'R1'和'R2'后,我把它们放到一个矩阵A = [R1; R2]中,例如,我有两个向量'x1',它等于'x1 = [ 1 0 1 0]'和'x2'等于'x2 = [1 0 0 1]'。所以当我做'A * x1'时,我会得到'false',当我做'A * x2'时,我会得到'true'。 – npisinp
这是一个错误。看到我的评论。 – npisinp
没问题。我很高兴我的帮助。 – rayryeng