作业帮 > 综合 > 作业

我有道matlab编程有点问题,哪位高手帮我看看,大恩不言谢!

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/22 20:42:29
我有道matlab编程有点问题,哪位高手帮我看看,大恩不言谢!
dt=0.001;
t=0:dt:0.6;
fp=30;
R=(1-2*(pi*fp*(k*dt-1/(2*fp))).^2)*exp(-(pi*fp*(k*dt-1/(2*fp))).^2);
dx=10;dz=10;
t0=0.2;
x=-500:dx:500;
z=-500:dz:500;
m=length(x);
n=length(z);
l=length(t);
v=1500;
a=v*dt/dx;
b=v*dt/dz;
for i=1:m;
for j=1:n;
if i==51,j==51
for k=0:round(1/fp/dt);
t=k*dt;
U(i,j,k)=R;
end
else
for k=0:1;
U(i,j,k)=0;
end
end
end
end
for k=0:l-1;
for i=2:m-1;
for j=2:n-1;
U(i,j,k+1)=2*(1-a.^2-b.^2)*U(i,j,k)+a.^2*(U(i+1,j,k)+U(i-1,j,k))+b.^2*(U(i,j+1,k)+U(i,j-1,k))-U(i,j,k-1);
end
end
imshow(U)
? Attempted to access (1,1,0); index must be a positive integer or logical.
注意,你这块有问题
for k=0:round(1/fp/dt);
t=k*dt;
U(i,j,k)=R;
Matlab中数组的下标是从1开始的,因此不能让k从0开始!
再问: 我改了之后 dx=10;dz=10; t0=0.2;x=-500:dx:500;z=-500:dz:500; m=length(x);n=length(z);l=length(t);v=1500;a=v*dt/dx;b=v*dt/dz; for i=1:m; for j=1:n; if i==51,j==51 for k=1:round(1/fp/dt); U(i,j,k-1)=R; end else for k=1:2; U(i,j,k-1)=0; end end end end ??? Attempted to access (1,1,0); index must be a positive integer or logical 还不行啊 哦,明白了,matlab里面没有0行0列,对吧?
再答: 对,所有数组的下标都是从1开始的。