MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [MATLAB数学相关] 我代码里循环错了,帮忙改下,急用 (https://www.labfans.com/bbs/showthread.php?t=15608)

天使之吻 2012-06-10 23:15

我代码里循环错了,帮忙改下,急用
 
x=rand(1,10);
y=rand(1,10);
z=cos(0.5.*x).*sin(y);
xi=linspace(0,1,30);
yi=linspace(0,1,30);
[X,Y]=meshgrid(xi,yi);
Z=griddata(x,y,z,X,Y,'nearest');
mesh(X,Y,Z);
a=(3^0.5)/3;b=(3^0.5)/3;c=(3^0.5)/3;
xa=1;ya=2;za=3;
v=sqrt(b^2+c^2);u=sqrt(a^2+b^2+c^2);
d=pi/4;
T=[1 0 0 0;0 1 0 0;0 0 1 0;-xa -ya -za 1];
Rx=[1 0 0 0;0 c/v b/v 0;0 -b/v c/v 0;0 0 0 1];
Ry=[v/u 0 -a/u 0;0 1 1 0;a/u 0 v/u 0;0 0 0 1];
Rz=[cos(d) sin(d) 0 0;-sin(d) cos(d) 0 0;0 0 1 0;0 0 1 1];
Ry1=[v/u 0 a/u 0;0 1 1 0;-a/u 0 v/u 0;0 0 0 1];
Rx1=[1 0 0 0;0 c/v -b/v 0;0 b/v c/v 0;0 0 0 1];
T1=[1 0 0 0;0 1 0 0;0 0 1 0;xa ya za 1];
g=zeros(1000,4);
for k=1:10
for m=1:10
for n=1:10
g=[x(k) y(m) z(n) 1]*T*Rx*Ry*Rz*Ry1*Rx1*T1;
end
end
g只有一行值,应该要1000行,循环g重复定义了,但我不知道怎么改,求指教

jimmymacong 2012-06-11 12:49

回复: 我代码里循环错了,帮忙改下,急用
 
你的复制的代码有点小问题,可能又一个end忘记复制了,
然后主要问题是g赋值出现问题,你用一个1*4的矩阵赋给g,这样只是反复刷新了g的第一行,没有实质的变化。我只改了一行代码,你看看合不合意!!

x=rand(1,10);
y=rand(1,10);
z=cos(0.5.*x).*sin(y);
xi=linspace(0,1,30);
yi=linspace(0,1,30);
[X,Y]=meshgrid(xi,yi);
Z=griddata(x,y,z,X,Y,'nearest');
mesh(X,Y,Z);
a=(3^0.5)/3;b=(3^0.5)/3;c=(3^0.5)/3;
xa=1;ya=2;za=3;
v=sqrt(b^2+c^2);u=sqrt(a^2+b^2+c^2);
d=pi/4;
T=[1 0 0 0;0 1 0 0;0 0 1 0;-xa -ya -za 1];
Rx=[1 0 0 0;0 c/v b/v 0;0 -b/v c/v 0;0 0 0 1];
Ry=[v/u 0 -a/u 0;0 1 1 0;a/u 0 v/u 0;0 0 0 1];
Rz=[cos(d) sin(d) 0 0;-sin(d) cos(d) 0 0;0 0 1 0;0 0 1 1];
Ry1=[v/u 0 a/u 0;0 1 1 0;-a/u 0 v/u 0;0 0 0 1];
Rx1=[1 0 0 0;0 c/v -b/v 0;0 b/v c/v 0;0 0 0 1];
T1=[1 0 0 0;0 1 0 0;0 0 1 0;xa ya za 1];
g=zeros(1000,4);
for k=1:10
for m=1:10
for n=1:10
g(100*(k-1)+10*(m-1)+n ,: )=[x(k) y(m) z(n) 1]*T*Rx*Ry*Rz*Ry1*Rx1*T1;
end
end
end

yhcode 2012-06-11 15:58

回复: 我代码里循环错了,帮忙改下,急用
 
如楼上所说,只要把for循环的循环核,也就是g的赋值向楼上那样改过来就好
for k=1:10
for m=1:10
for n=1:10
g(100*(k-1)+10*(m-1)+n ,: )=[x(k) y(m) z(n) 1]*T*Rx*Ry*Rz*Ry1*Rx1*T1;
end
end
end


所有时间均为北京时间。现在的时间是 13:00

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.