Matlab在for循环问题中的绘图
我已经编写了一个代码来在循环中绘制函数。对于循环n=4:4:32的每一个数值,我有一些变量会随着这个数值的变化而变化,问题来了。 如果我不使用for循环,我的绘图就是它必须的,而使用循环则不是,因为我的函数是根据n计算的,但变量不是 我不明白为什么会发生这种情况:例如,对于n=12,两个绘图图像不应该相同吗?。我上传了两个图像,都是n=12,第一个不使用循环,第二个使用循环 第一张图片: 第二张图片: 代码 注意:prac8fun和prac8fun2是保存在不同.m文件中的函数 帕拉格Matlab在for循环问题中的绘图,matlab,loops,for-loop,plot,Matlab,Loops,For Loop,Plot,我已经编写了一个代码来在循环中绘制函数。对于循环n=4:4:32的每一个数值,我有一些变量会随着这个数值的变化而变化,问题来了。 如果我不使用for循环,我的绘图就是它必须的,而使用循环则不是,因为我的函数是根据n计算的,但变量不是 我不明白为什么会发生这种情况:例如,对于n=12,两个绘图图像不应该相同吗?。我上传了两个图像,都是n=12,第一个不使用循环,第二个使用循环 第一张图片: 第二张图片: 代码 注意:prac8fun和prac8fun2是保存在不同.m文件中的函数 帕拉格 请解释代
请解释代码中变量的问题。至少我不清楚这个问题 我不知道如何更好地解释自己,所以我上传了一段视频,展示了我的问题。 视频必须用http替换htp:htp://youtu.be/dWredX5z8XY
感谢您的时间:我认为问题在于您对lambda的处理。它以[]开头,但您附加在第一个循环中创建的值,并且从不重置它。因此,在第三个循环n=12时,lambda的长度为1 x 27,但是您只需要索引1到13之间的值来创建D 另一方面,如果移除外部循环并使用n=12,lambda从[]开始,然后向其中填充13个值,这可能是您想要的行为 在不使用n=12的循环运行之后,以及在将循环设置为n=4:4:12的情况下运行之后,可以通过检查lambda的大小和内容来检查这一点。为了修复它,我建议您在循环开始时预先分配lambda的大小,就像对D一样,并使用直接索引lambdajj=lambdaj填充
一般来说:尽可能避免附加值。如果您处于除了使用x=[x,newx]之外别无选择的情况下;格式,特别是嵌套循环中的格式,请密切关注变量的大小和内容。请解释代码中变量的问题。至少我不清楚这个问题。
a = -1; b = 3;
lambda = [];
xx = linspace(a,b,1000);
df = prac8fun2(xx);
for n = 4:4:32
D = zeros(n+1,n+1);
x = linspace(a,b,n+1);
for jj = 1:n+1
lambdaj = (-1)^(n-(jj-1)).*nchoosek(n,jj-1);
lambda = [lambda, lambdaj];
end
lambda = lambda.*((n^n)/(factorial(n)*(b-a)^n));
for jj = 1:n+1
for ii = 1:n+1
if ii == jj
D(ii,jj) = sum((x(jj)-[x(1:jj-1), x(jj+1:end)]).^(-1));
else
D(ii,jj) = lambda(jj)./(lambda(ii)).*(x(ii)-x(jj)).^(-1);
end
end
end
Df = D*prac8fun(x)';
plot(xx,df,'k','linewidth',2); hold on;
plot(x,Df,'-or'); grid on;
pause
close
end