0

我是编程和 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 是一个数组。我该如何解决这个问题?我是新手,请指出我的错误。我很乐意提供进一步的澄清。在此先感谢您的帮助。

4

2 回答 2

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 );
于 2013-06-11T12:06:04.923 回答
0

让我们假设这f是一个数组,其中包含从 0 到a对应于参数的函数值x。然后,您可以这样做:

f1=[f f(end:-1:1)];
x=[x x(end)+x+x(1)];
plot(x,f1)
于 2013-06-11T12:05:36.327 回答