如何为MATLAB的hold on命令设置条件以选择性绘制谐波曲线
MATLAB谐波曲线选择性绘制解决方案
要实现不修改初始频率数组、仅绘制指定频率余弦曲线的需求,核心是通过索引筛选出目标频率对应的曲线数据,再针对性绘制。以下是修改后的代码及说明:
修改后的代码
clear,clc %% Data x = 0:1:100; a = 5.76; omega = 0.8:0.1:11.1; k = omega ./ a; [X,K,OMEGA] = meshgrid(x,k,omega); y = cos(OMEGA - K .* X); % -------------------------- 关键筛选部分 -------------------------- % 定义需要绘制的目标频率(可根据需求灵活修改) target_omega = 0.8:1:10.8; % 考虑浮点精度问题,用ismembertol匹配目标频率在原数组中的索引 % 如果是整数步长无精度问题,也可以用 idx = ismember(omega, target_omega); idx = ismembertol(omega, target_omega, 1e-6); % 仅绘制目标频率对应的曲线 figure(1); plot(x, y(:, idx)); title('y(x) - 仅显示指定频率曲线'); grid on;
关键说明
- 灵活调整绘制条件:只需修改
target_omega的定义即可切换绘制的频率范围,比如要绘制5到10之间步长0.5的频率,直接改成target_omega = 5:0.5:10;;如果要筛选满足特定条件的频率(比如大于3且小于8),可以用逻辑索引:idx = omega > 3 & omega < 8; - 浮点精度处理:由于MATLAB中浮点数组可能存在微小精度误差,用
ismembertol比ismember更可靠,第三个参数是容错阈值,可根据需求调整。 - 保留原数据完整性:初始的
omega数组和y矩阵完全未修改,后续仍可基于完整数据做其他分析。
内容的提问来源于stack exchange,提问作者Varga
相关产品推荐
相关产品推荐

