我是编程和MATLAB的初学者。 问题: 我有一个从0到a的函数f(x)。我需要在x = a上反映这一点,以便区域a中的图形
x =0:16/100:16;
if all(x<8)
m = 0.00003 + 0.00002./((cos(pi/4)./sinh(0.5*log(0.5*x)))+coth(0.5*log(0.5*x)));
end
if all(x>8)
p = 0.00003 + 0.00002./((cos(pi/4)./sinh(0.5*log(0.5*(16-x))))+coth(0.5*log(0.5*(16-x))));
end
z = m + p ;
plot(x,z);grid on
但是,x是一个数组。 我该如何解决这个问题? 我是新手所以请指出我的错误。我很乐意进一步澄清。在此先感谢您的帮助。
答案 0 :(得分:1)
矢量化!
z = ( x <= 8 ) .* ... % select the first part
( 0.00003 + 0.00002./((cos(pi/4)./sinh(0.5*log(0.5*x)))+coth(0.5*log(0.5*x))) ) + ...
( x > 8 ) .* ... % select second part
( 0.00003 + 0.00002./((cos(pi/4)./sinh(0.5*log(0.5*(16-x))))+coth(0.5*log(0.5*(16-x)))) ) ;
plot( x, z );
答案 1 :(得分:0)
我们假设f
是一个数组,其中包含从0到a
的函数值,对应于参数x
。然后,你可以这样做:
f1=[f f(end:-1:1)];
x=[x x(end)+x+x(1)];
plot(x,f1)