MATLAB如何用for循环来编写复杂多循环

将p个x和q个y数据代入下面这个公式里, X=(x1、x2、x3……xp),Y=(y1、y2、y3……yq)
最后想把输出结果弄为一个矩阵F,以n=2为例,这个输出矩阵F的行长度是p×q,列长度是(n+1)²

img

img

你好,代码供参考,n你可以任意设置:

clc ;clear
n = 2; % n值,可改变
[i2, i1] = meshgrid(0:n);
% 由于你没有提供xy,我这里x和y是从2111:10(你可以选择自己的)
x = 2:11;   % 1×10的x
y = 1:10;   % 1×10的y
i1 = i1(:); % i1是x的幂指标
i2 = i2(:); % i2是y的幂指标
p = length(x); % p是x或者
q = length(y); % q是y的长度
[q1,p1] = meshgrid(1:p, 1:q);
X = x(p1(:));
Y = y(q1(:));
F = zeros(p*q, (n+1)^2);% F的大小
for i = 1:1:numel(X)%一次循环即可
    F(i,:) = X(i).^i1.*Y(i).^i2;%F的计算,从x(1)、y(1)一直到xp、yq
end
F
%最后F就是你需要的矩阵

结果示意:

F =

           1           2           4           1           2           4           1           2           4
           1           3           9           1           3           9           1           3           9
           1           4          16           1           4          16           1           4          16
           1           5          25           1           5          25           1           5          25
           1           6          36           1           6          36           1           6          36
           1           7          49           1           7          49           1           7          49
           1           8          64           1           8          64           1           8          64
           1           9          81           1           9          81           1           9          81
           1          10         100           1          10         100           1          10         100
           1          11         121           1          11         121           1          11         121
           1           2           4           2           4           8           4           8          16
           1           3           9           2           6          18           4          12          36
           1           4          16           2           8          32           4          16          64
           1           5          25           2          10          50           4          20         100
           1           6          36           2          12          72           4          24         144
           1           7          49           2          14          98           4          28         196
           1           8          64           2          16         128           4          32         256
           1           9          81           2          18         162           4          36         324
           1          10         100           2          20         200           4          40         400
           1          11         121           2          22         242           4          44         484
           1           2           4           3           6          12           9          18          36
           1           3           9           3           9          27           9          27          81
           1           4          16           3          12          48           9          36         144
           1           5          25           3          15          75           9          45         225
           1           6          36           3          18         108           9          54         324
           1           7          49           3          21         147           9          63         441
           1           8          64           3          24         192           9          72         576
           1           9          81           3          27         243           9          81         729
           1          10         100           3          30         300           9          90         900
           1          11         121           3          33         363           9          99        1089
           1           2           4           4           8          16          16          32          64
           1           3           9           4          12          36          16          48         144
           1           4          16           4          16          64          16          64         256
           1           5          25           4          20         100          16          80         400
           1           6          36           4          24         144          16          96         576
           1           7          49           4          28         196          16         112         784
           1           8          64           4          32         256          16         128        1024
           1           9          81           4          36         324          16         144        1296
           1          10         100           4          40         400          16         160        1600
           1          11         121           4          44         484          16         176        1936
           1           2           4           5          10          20          25          50         100
           1           3           9           5          15          45          25          75         225
           1           4          16           5          20          80          25         100         400
           1           5          25           5          25         125          25         125         625
           1           6          36           5          30         180          25         150         900
           1           7          49           5          35         245          25         175        1225
           1           8          64           5          40         320          25         200        1600
           1           9          81           5          45         405          25         225        2025
           1          10         100           5          50         500          25         250        2500
           1          11         121           5          55         605          25         275        3025
           1           2           4           6          12          24          36          72         144
           1           3           9           6          18          54          36         108         324
           1           4          16           6          24          96          36         144         576
           1           5          25           6          30         150          36         180         900
           1           6          36           6          36         216          36         216        1296
           1           7          49           6          42         294          36         252        1764
           1           8          64           6          48         384          36         288        2304
           1           9          81           6          54         486          36         324        2916
           1          10         100           6          60         600          36         360        3600
           1          11         121           6          66         726          36         396        4356
           1           2           4           7          14          28          49          98         196
           1           3           9           7          21          63          49         147         441
           1           4          16           7          28         112          49         196         784
           1           5          25           7          35         175          49         245        1225
           1           6          36           7          42         252          49         294        1764
           1           7          49           7          49         343          49         343        2401
           1           8          64           7          56         448          49         392        3136
           1           9          81           7          63         567          49         441        3969
           1          10         100           7          70         700          49         490        4900
           1          11         121           7          77         847          49         539        5929
           1           2           4           8          16          32          64         128         256
           1           3           9           8          24          72          64         192         576
           1           4          16           8          32         128          64         256        1024
           1           5          25           8          40         200          64         320        1600
           1           6          36           8          48         288          64         384        2304
           1           7          49           8          56         392          64         448        3136
           1           8          64           8          64         512          64         512        4096
           1           9          81           8          72         648          64         576        5184
           1          10         100           8          80         800          64         640        6400
           1          11         121           8          88         968          64         704        7744
           1           2           4           9          18          36          81         162         324
           1           3           9           9          27          81          81         243         729
           1           4          16           9          36         144          81         324        1296
           1           5          25           9          45         225          81         405        2025
           1           6          36           9          54         324          81         486        2916
           1           7          49           9          63         441          81         567        3969
           1           8          64           9          72         576          81         648        5184
           1           9          81           9          81         729          81         729        6561
           1          10         100           9          90         900          81         810        8100
           1          11         121           9          99        1089          81         891        9801
           1           2           4          10          20          40         100         200         400
           1           3           9          10          30          90         100         300         900
           1           4          16          10          40         160         100         400        1600
           1           5          25          10          50         250         100         500        2500
           1           6          36          10          60         360         100         600        3600
           1           7          49          10          70         490         100         700        4900
           1           8          64          10          80         640         100         800        6400
           1           9          81          10          90         810         100         900        8100
           1          10         100          10         100        1000         100        1000       10000
           1          11         121          10         110        1210         100        1100       12100

有帮助望采纳哟,帮助答主冲榜哦,谢谢啦


p=4;
q=5;
n=2;
x=1:1:p;
y=1:1:q;
f = ones(p*q,(n+1)^2);
m1 = 0;
for i = 1:p
    for j = 1:q
        m1 = m1 + 1;
        m2 = 0;
        for k = 0:n
            for L = 0:n
                m2 = m2 +1;
                f(m1,m2) = (x(i)^L) * (y(j)^k);
            end
        end
    end
end

我觉得 你要的是这种 通配的函数 X Y n 随便改的这种


function result = Fxy( X,Y ,n)

p=size(X,2);
q=size(Y,2);
colN = (n+1)^2;
rowN = p*q;

X=X';
%重复q行,colN列   X竖向量  就是最终的样子
matX = repmat(X,q,colN);

Y=Y';
matY=[];
%每行重复p行,colN列  Y竖向量
for i=1:1:q
    matY = [matY;repmat(Y(i),p,colN)];
end

%x部分处理
for i = 1:1:colN
    xZhiShu=mod(i-1,n+1);
    matX(:,i) = matX(:,i).^xZhiShu;
end
%y部分处理
for i = 1:n+1:colN-n
    yZhiShu = (i-1)/(n+1);
    matY(:,i:i+2) = matY(:,i:i+2).^yZhiShu;
end

result = matX.*matY;
end


脚本调用尝试


X=[1,2,3,4,5];
Y=[1,2,3,4,5,6];
n=2;

F =Fxy(X,Y,2);

X=[3,2,3,4,5];
Y=[4,2,5,2,4,2];
n=3;
F2 =Fxy(X,Y,2);

结果F

1    1    1    1    1    1    1    1    1
1    2    4    1    2    4    1    2    4
1    3    9    1    3    9    1    3    9
1    4    16    1    4    16    1    4    16
1    5    25    1    5    25    1    5    25
1    1    1    2    2    2    4    4    4
1    2    4    2    4    8    4    8    16
1    3    9    2    6    18    4    12    36
1    4    16    2    8    32    4    16    64
1    5    25    2    10    50    4    20    100
1    1    1    3    3    3    9    9    9
1    2    4    3    6    12    9    18    36
1    3    9    3    9    27    9    27    81
1    4    16    3    12    48    9    36    144
1    5    25    3    15    75    9    45    225
1    1    1    4    4    4    16    16    16
1    2    4    4    8    16    16    32    64
1    3    9    4    12    36    16    48    144
1    4    16    4    16    64    16    64    256
1    5    25    4    20    100    16    80    400
1    1    1    5    5    5    25    25    25
1    2    4    5    10    20    25    50    100
1    3    9    5    15    45    25    75    225
1    4    16    5    20    80    25    100    400
1    5    25    5    25    125    25    125    625
1    1    1    6    6    6    36    36    36
1    2    4    6    12    24    36    72    144
1    3    9    6    18    54    36    108    324
1    4    16    6    24    96    36    144    576
1    5    25    6    30    150    36    180    900

结果2


1    3    9    4    12    36    16    48    144
1    2    4    4    8    16    16    32    64
1    3    9    4    12    36    16    48    144
1    4    16    4    16    64    16    64    256
1    5    25    4    20    100    16    80    400
1    3    9    2    6    18    4    12    36
1    2    4    2    4    8    4    8    16
1    3    9    2    6    18    4    12    36
1    4    16    2    8    32    4    16    64
1    5    25    2    10    50    4    20    100
1    3    9    5    15    45    25    75    225
1    2    4    5    10    20    25    50    100
1    3    9    5    15    45    25    75    225
1    4    16    5    20    80    25    100    400
1    5    25    5    25    125    25    125    625
1    3    9    2    6    18    4    12    36
1    2    4    2    4    8    4    8    16
1    3    9    2    6    18    4    12    36
1    4    16    2    8    32    4    16    64
1    5    25    2    10    50    4    20    100
1    3    9    4    12    36    16    48    144
1    2    4    4    8    16    16    32    64
1    3    9    4    12    36    16    48    144
1    4    16    4    16    64    16    64    256
1    5    25    4    20    100    16    80    400
1    3    9    2    6    18    4    12    36
1    2    4    2    4    8    4    8    16
1    3    9    2    6    18    4    12    36
1    4    16    2    8    32    4    16    64
1    5    25    2    10    50    4    20    100