1

我被困在函数程序(不是主程序)上,它必须绘制一个显示几条垂直正弦曲线的 3D 图形。

不幸的是,我有一个计划而不是窦曲线。我不知道为什么它不起作用,我一直试图在 2 小时内找出问题所在...请帮助谢谢

%fonction sinus_vertical:
function img=sinus_vertical(N,M)
w=2*pi;
t=1:0.1:N;
for j=1:M
    for i=1:N
        for k=1:N
            img(i,j)=sin(w*t(k));
        end
    end
end

主程序:

%Main Script
img3=sinus_vertical(100,100);
figure(1);
mesh(img3);
colormap gray
4

1 回答 1

1

对于您想要的,最简单的解决方案是:

function img=sinus_vertical(N,M)
  w=2*pi;
  t=0.1*(1:N);
  img = repmat(sin(w*t)',1,M);
end

如果您跳过第三个内部循环,您可以更正原始代码,并修改设置t。所以正确的代码是:

function img=sinus_vertical(N,M)
    w=2*pi;
    t=0.1*(1:N);
    for j=1:M
        for i=1:N
            img(i,j)=sin(w*t(i)); % or j, depending on what direction you want the sin.
        end
    end
end

解释:
我用 给你写了“不需要”循环k,因为如果你这样做

for k=1:N
  img(i,j) = sin(w*t(k))
end

这和写作一样img(i,j)=sin(w*t(N))。也就是说,您会将所有图像像素设置为相同的值。

于 2012-12-03T21:51:06.347 回答