我知道此类问题之前可能已经得到解答,但我是matlab的初学者,所以请承担我的小孩问题。
我想从一组值生成一个11 * 12矩阵。我有五个不同的矢量名为X,Y Z,u,v。
我的代码是:
A =零(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矩阵
它给出了错误的价值
这意味着它在每次迭代中追加我不想要的列。
请帮我找一个11 * 12的矩阵。感谢
答案 0 :(得分:0)
您在每次迭代时都会为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,:)
将它们组合成一行。