【发布时间】:2014-04-23 12:00:28
【问题描述】:
我正在做一个项目,使用名为 prtcl_3d_ss_visualize.m 的 BEMLIB 代码对意大利面周围的酱汁流动进行建模,该代码可从“http://dehesa.freeshell.org/BEMLIB/”获得。代码如下:
%---
file2 = fopen('prtcl_3d_ss_visualize.m')
Npnt = fscanf(file2,'%f',[1,1])
Nvert = fscanf(file2,'%f',[1,1])
Nface = fscanf(file2,'%f',[1,1])
vert = fscanf(file2,'%f',[3,Nvert]);
wall = fscanf(file2,'%f',[1,1])
fclose(file2)
%---
for i=1:Nvert
save = vert(2,i);
vert(2,i) = vert(3,i);
vert(3,i) = save;
end
Ic=0;
for i=1:Nface
for j=1:Npnt
Ic=Ic+1;
fac(j,i) = Ic;
end
end
patch('faces',Nfac’,'vertices',vert’,...
'FaceColor','y',...
'FaceLighting','phong',...
'BackFaceLighting','lit')
%light('Position',[1 3 2]);
%light('Position',[-3 -1 3]);
%material dull
%material shiny
%axis vis3d off
axis([-1.5 1.5 -1.5 1.5 -0.5 2.5 ])
%view(45,34)
xlabel('x')
ylabel('z')
zlabel('y')
xw(1)=-1.5; zw(1)=-1.5; yw(1)=wall;
xw(2)= 1.5; zw(2)=-1.5; yw(2)=wall;
xw(3)= 1.5; zw(3)= 1.5; yw(3)=wall;
xw(4)=-1.5; zw(4)= 1.5; yw(4)=wall;
xw(5)=-1.5; zw(5)=-1.5; yw(5)=wall;
patch(xw,zw,yw,yw);
hold off
我在 matlab 中输入代码时遇到了几个错误,其中第一个是我解决了将 fopen('prtcl_3d') 更改为 fopen('partcl_3d_ss_visualize.m') 的问题,这是他的文件名。 我遇到的第二个错误是我输入的地方
patch('faces',Nfac’,'vertices',vert’,...
'FaceColor','y',...
'FaceLighting','phong',...
'BackFaceLighting','lit')
Nfac' 最初是 fac' 但我收到错误“??? 未定义的函数或变量 fac”,所以我将其更改为已定义的变量 Nfac。
我现在面临的问题是代码的最后一部分。当我进入第一行时
xw(1)=-1.5; zw(1)=-1.5; yw(1)=wall;
我收到错误消息:“??? 在赋值 A(I) = B 中,B 和 I 中的元素数量必须相同。”
对于其余的 xw,zw,yw 输入,我也得到了这个,我做错了什么?
非常感谢,
阿基尔
【问题讨论】: