我正在尝试创建一个看起来像这样的数组(作为示例)
X = | 1 2 3 |
| 1 2 3 |
| 1 2 3 |
Y = | 1 1 1 |
| 2 2 2 |
| 3 3 3 |
我尝试在一个while循环中执行嵌套for循环,使用此方法,Y数组工作但不是X数组,我有点理解为什么它不起作用但我不知道如何解决它。
这就是我得到的
X = [];
Y = [];
c=1;
while c<=3;
for i=1:3
for j=1:3
X(i,c)=j;
Y(i,c)=i;
end
end
c=c+1;
end
据我所知,meshgrid命令会为我提供一行代码,但我必须使用嵌套for循环。
有什么建议吗?
答案 0 :(得分:3)
也许试试这个:
startIter = 1;
endIter = 3;
X = [];
Y = [];
line = startIter:endIter
for i = 1:endIter
X = [X;line];
Y = [Y,line'];
end
答案 1 :(得分:1)
编辑:哎呀!刚刚注意到你想用for
循环来做这件事。我道歉。因此,我将把这里作为参考,以防有人想知道如何在没有循环的情况下做到这一点。
您可以在没有任何for
循环的情况下执行此操作。尝试使用repmat
。
x = 1 : 3;
y = (1 : 3)';
X = repmat(x, 3, 1);
Y = repmat(y, 1, 3);
结果:
X =
1 2 3
1 2 3
1 2 3
Y =
1 1 1
2 2 2
3 3 3
通常,如果您需要M x N
矩阵,请执行以下操作:
x = 1 : N
y = (1 : M)';
X = repmat(x, M, 1);
Y = repmat(y, 1, N);
如果您不能 允许使用repmat
,则可以通过在所需维度中指定 1 数组来复制数据。但是,当矩阵的大小变大时,这变得非常慢,因此必须小心。
x = 1 : N;
y = (1 : M)';
X = x(ones(M, 1), :);
Y = y(:, ones(N, 1));