0
我有以下代碼創建100x2
人口向量,根據函數f
評估人口,然後根據獲得最低函數分數的前10位人口成員創建一個新人口:MATLAB:修改後的mvnrnd輸出
N = 100;
N_elite = 0.1*N;
dim = 2;
a = 0;
b = 3;
x = (b-a).*rand(N, dim)+a;
f = @(x) x(:,1).^2 + x(:,2).^2;
cost = f(x)
population_cost = [x,cost]
x_sorted = sortrows(population_cost,dim+1)
x_elite = x_sorted(1:N_elite,:)
mu = mean(x_elite(:,[1:dim]))
sigma = cov(x_elite(:,[1:dim]))
x = mvnrnd(mu,sigma,N)
該代碼使用mvnrnd
來創建新的人口。我希望有一個具有以下屬性的新種羣向量:x(:,1)<x(:,2)
,也就是說,第一列中的每個值必須低於第二列中的每個值。在mvnrnd
中是否有一個屬性/選項允許這樣做,而不必使用for循環來檢查每一行並執行切換,如果x(i,1)>x(i,2)
?
您指定的要求是與具有多元高斯輸出不兼容分配。所以不,'mvnrnd'不能這樣做 –