专栏
标签
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])

image.png
使用以下任意一种方式进行间隔取值,然后绘图,分别得到绘图结果。

# 间隔取值 方式一

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");

image.png
image.png
image.png
**说明:**可以根据取值点的不同调整以上代码。

方式二:如果是单机版,支持使用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)

image.png
image.png

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

全部回答

暂无数据
暂无数据
用户
和原帖交流更多问题细节吧,去
我要发帖 我要发帖
资料中心 资料中心
查看更多>
热门帖子 热门帖子
主要贡献者 主要贡献者
过去7天