Syslab如何获取图上的10个点数据?
技术分享
发布于 2025-07-10 11:01:40
查看 1过去327天
可以使用间隔取值的方式或者ginput函数。
方式一: 使用间隔取值的方式
using TyControlSystems
using TyPlot
using TySignalProcessing
b,a = butter(3,0.5,"highpass")
h,w = freqz(b,a)
dB = mag2db(abs.(h))
plot(w,dB)
xlabel("w/π")
ylabel("Magnitude (dB)")
ylim([-82 5])

使用以下任意一种方式进行间隔取值,然后绘图,分别得到绘图结果。
# 间隔取值 方式一
step = 50;# 设置步长
# 获取步长间隔的数据
w_subset = w[1:step:end];
dB_subset = dB[1:step:end];
# 绘制原图和提取的点
plot(w,dB,"b-",w_subset, dB_subset,"ro");
# 间隔取值 方式二
using TyMath
w_new = LinRange(minimum(w), maximum(w), 10); # 设置需要的均匀间隔:在 w 的范围内均匀选取 10 个点
dB_new = interp1(w, dB, w_new, "linear"); # linear表示线性插值
plot(w, dB, "b-", w_new, dB_new, "ro");
# 间隔取值 方式三
# 随机指定要查找的 w
using TyMath
w_sample = [0.2;0.5; 0.8; 1.1; 1.4; 1.7; 2; 2.3; 2.6;2.9];
# 插值计算 dB_sample 值
dB_sample = interp1(w, dB, w_sample, "linear");
# 绘制原图和插值后的点
plot(w, dB, "b-", w_sample, dB_sample, "ro");



**说明:**可以根据取值点的不同调整以上代码。
方式二:如果是单机版,支持使用ginput函数,通过鼠标交互时选择10个数据点,返回结果
using TyControlSystems
using TyPlot
using TySignalProcessing
using TyMath
b, a = butter(3, 0.5, "highpass")
h, w = freqz(b, a)
dB = mag2db(abs.(h))
plot(w, dB)
xlabel("w/π")
ylabel("Magnitude (dB)")
ylim([-82 5])
w, dB = ginput(10)


所属专栏:Syslab基础平台
产品信息:Syslab科学计算环境