![](/img/trans.png)
[英]Matlab - how do I plot the limit when x reaches 0 in the function (x - sqrt(x)) / sqrt(sin(x))?
[英]Writing a MATLAB function for sinc(x)=sin(x)/x
我正在尝试编写 MATLAB function 来评估区间 [0,pi] 上的 sinc(x)=sin(x)/x。 我在下面包含了我的代码。 它被保存为文件 sinc3.m。
function y = sinc3(x)
if x<0
disp('Outside specified interval of x');
y=0;
elseif ((x>=0) && (x<=pi))
sinc=@(x) sin(x)/x;
y=sinc(x);
else
disp('Outside specified interval of x');
y=0;
end
end
显示错误消息“sinc3 需要更多输入 arguments 才能运行”。 我不明白这是什么意思。
为运行标量输入而对 function 进行的一些调整包括将 output y
设置为零,以处理超出区间的琐碎情况。 这必须完成,因为 function 预计 output 将被初始化并返回。 此外,if 语句在 MATLAB 的末尾不需要分号。
disp(sinc3(2));
function y = sinc3(x)
if x < 0
disp('Outside specified interval of x');
y = 0;
elseif ((x>=0) && (x<=pi))
sinc= @(x) sin(x)/x;
y =sinc(x);
else
disp('Outside specified interval of x');
y = 0;
end
end
使用 MATLAB 的向量化运算可以大大减少编写复杂循环的必要性。 下面是评估和绘制截断 sinc 信号的两个示例。
此方法使用名为Range
的逻辑数组截断 sinc 并将信号限制在[0,π]范围内。 Range
只会在参数x
大于 0 且小于 π 时为真“1”。 其他地方Range
为假“0”。 通过按元素将sin(x)./x
sinc 乘以Range
,信号被截断。 这个过程可以可视化为将一个矩形脉冲乘以正弦波,该矩形脉冲仅是正的并且存在于该范围内。
%Plotting the sinc symbolically%
syms x
Range = ((x >= 0) & (x <= pi));
sinc = @(x) (sin(x)./x).*Range;
fplot(sinc(x));
为了评估特定值,我们可以忽略将x
声明为符号变量,而是将向量作为输入传递给匿名 function。
%Generating a vector of x-values to evaluate the sinc for%
Start_Time = 0; End_Time = 20;
Interval = 0.1;
X = (0:Interval:20);
Sinc_Signal = @(x) (sin(x)./x).*((x >= 0) & (x <= pi));
plot(X,Sinc_Signal(X),'Marker','.');
xlim([-5 5]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.