为什么代码没有给出正确的结果 Matlab?
Why code is not giving proper results Matlab?
我知道这类问题以前可能有人回答过,但我是 matlab 的初学者,所以请多多包涵我的小问题。
我想从一组值生成一个 11*12 矩阵。我有五个不同的向量,名为 X、Y、Z、u、v。
我的代码是:
A=zeros(12,11);
for i=1:6
A=[X(i) Y(i) Z(i) 1 0 0 0 0 (-u(i)*X(i)) (-u(i)*Y(i)) (-u(i)*Z(i)),0 0 0 0 X(i) Y(i) Z(i) 1 (-v(i)*X(i)) (-v(i)*Y(i)) (-v(i)*Z(i))];
end
在这里,我想为每次迭代填充两行。所以一共变成了12行。但问题是
1. 它给我 22*1 矩阵
2. 给出错误的值
这意味着它在我不想要的每次迭代中附加列。
请帮我找一个11*12的矩阵。谢谢
您在每次迭代中都将一个全新的矩阵分配给 A
,因此这将导致您得到的结果。
您想要的是每次迭代替换行。您可以索引矩阵来执行此操作:
A(1,:) = [1 2 3 4];
例如,这会将第一行替换为给定的值。所以你可以使用
A(i*2-1,:)=[X(i) Y(i) Z(i) 1 0 0 0 0 (-u(i)*X(i)) (-u(i)*Y(i)) (-u(i)*Z(i))];
A(i*2,:)=[0 0 0 0 X(i) Y(i) Z(i) 1 (-v(i)*X(i)) (-v(i)*Y(i)) (-v(i)*Z(i))];
不幸的是,我现在没有 Matlab,看看您是否可以通过索引 A(i*2-1:i*2,:)
将它们合并成一行。
我知道这类问题以前可能有人回答过,但我是 matlab 的初学者,所以请多多包涵我的小问题。
我想从一组值生成一个 11*12 矩阵。我有五个不同的向量,名为 X、Y、Z、u、v。
我的代码是:
A=zeros(12,11);
for i=1:6
A=[X(i) Y(i) Z(i) 1 0 0 0 0 (-u(i)*X(i)) (-u(i)*Y(i)) (-u(i)*Z(i)),0 0 0 0 X(i) Y(i) Z(i) 1 (-v(i)*X(i)) (-v(i)*Y(i)) (-v(i)*Z(i))];
end
在这里,我想为每次迭代填充两行。所以一共变成了12行。但问题是
1. 它给我 22*1 矩阵
2. 给出错误的值
这意味着它在我不想要的每次迭代中附加列。
请帮我找一个11*12的矩阵。谢谢
您在每次迭代中都将一个全新的矩阵分配给 A
,因此这将导致您得到的结果。
您想要的是每次迭代替换行。您可以索引矩阵来执行此操作:
A(1,:) = [1 2 3 4];
例如,这会将第一行替换为给定的值。所以你可以使用
A(i*2-1,:)=[X(i) Y(i) Z(i) 1 0 0 0 0 (-u(i)*X(i)) (-u(i)*Y(i)) (-u(i)*Z(i))];
A(i*2,:)=[0 0 0 0 X(i) Y(i) Z(i) 1 (-v(i)*X(i)) (-v(i)*Y(i)) (-v(i)*Z(i))];
不幸的是,我现在没有 Matlab,看看您是否可以通过索引 A(i*2-1:i*2,:)
将它们合并成一行。