Matlab 我需要将3个变量的嵌套for循环转换为n个变量

Matlab 我需要将3个变量的嵌套for循环转换为n个变量,matlab,Matlab,这是我在Nobj=3时使用变量Pesos的程序。这里我使用3个嵌套的for循环来计算比索,但是我应该如何更改代码以便它能够处理Nobj=n Nobj=3; Card=10; delta1=1/(Card-1); alpha1=0:delta1:1; k=0; Pesos=zeros(Card^Nobj,Nobj); for i=1:size(alpha1,2) for ii=1:size(alpha1,2) for iii=1:si

这是我在
Nobj=3
时使用变量
Pesos
的程序。这里我使用3个嵌套的
for
循环来计算
比索
,但是我应该如何更改代码以便它能够处理
Nobj=n

Nobj=3;
Card=10;
delta1=1/(Card-1);
alpha1=0:delta1:1;
    k=0;
    Pesos=zeros(Card^Nobj,Nobj);
    for i=1:size(alpha1,2)
        for ii=1:size(alpha1,2)
            for iii=1:size(alpha1,2)
                k=k+1;
                Pesos(k,:)=[alpha1(i) alpha1(ii) alpha1(iii)];
                if sum(Pesos(k,:))>0
                    Pesos(k,:)=Pesos(k,:)/sum(Pesos(k,:));
                else
                    Pesos(k,:)=[0 0 1];
                end
            end
        end
    end
使用以下命令将其矢量化:


sum(比索(k,:)
总是大于零,因为
all(alpha1>0)
第一行不会大于0。因为所有元素都是0
% Parameters
N    = 3;
Card = 10;

% Generate regularly-spaced gridded data of identical 
% ranges along N dimensions
alpha1 = linspace(0, 1, Card);       
[Pesos{1:N}] = ndgrid(alpha1);

% Expand and concatenate horizontally
Pesos = cellfun(@(x)x(:), Pesos(N:-1:1), 'UniformOutput', false);    
Pesos = [Pesos{:}];

% Divide by the row sums
Pesos = bsxfun(@rdivide, Pesos, sum(Pesos,2));

% or 
%
% Pesos = Pesos ./ sum(Pesos,2);
%
% if you're on R2016b or later.