立意
在本课题所涉及的实验中,需要将2个拉线式位移传感器中的数据收集并处理,在此基础上求解相应的速度
主要功能
- 针对一个figure文件中仅包含一个plot,且该plot中包含指定数目的曲线,求这些曲线的RMS值;
- 针对一个figure文件中包含多个plot,且该plot中包含相同数目的曲线,求这些曲线的RMS值;
1figure1plot3curve的RMS值计算
% 读取 .fig 文件
fig = openfig('yourfigurename.fig');% 获取所有的 axes 对象
axes_handles = findobj(fig, 'Type', 'axes');% 假设所有曲线都在第一个 axes 上
if ~isempty(axes_handles)ax = axes_handles(1);% 获取所有的 line 对象line_handles = findobj(ax, 'Type', 'line');% 获取图例对象legend_obj = findobj(fig, 'Type', 'legend');% 确保有三条曲线if length(line_handles) == 3% 获取图例的文本内容if ~isempty(legend_obj)legend_text = get(legend_obj, 'String');elselegend_text = cell(1, 3);for i = 1:3legend_text{i} = ['Curve ' num2str(i)];endendfor i = 1:3% 获取第 i 条曲线的数据x = get(line_handles(i), 'XData');y = get(line_handles(i), 'YData');% 计算 RMS 值rms_value = rms(y);% 显示结果fprintf('%s 的 RMS 值为: %.4f\n', legend_text{i}, rms_value);endelseerror('图中曲线数量不为 3 条。');end
elseerror('未找到 axes 对象。');
end% 关闭图形
close(fig);
1figure8plot4curve的RMS值计算
% 读取 .fig 文件
fig = openfig('vehicle_dynamics_erformances2.fig');% 获取所有的 axes 对象(即 subplot)
axes_handles = findobj(fig, 'Type', 'axes');% 确保有 8 个 subplot
if length(axes_handles) == 8% 获取每个 axes 的位置信息positions = zeros(8, 4);for i = 1:8positions(i, :) = get(axes_handles(i), 'Position');end% 按照 4 行 2 列的布局排序% 先按行排序,同一行内按列排序[~, sort_indices] = sortrows([-positions(:, 2), positions(:, 1)]);sorted_axes_handles = axes_handles(sort_indices);for subplot_index = 1:8ax = sorted_axes_handles(subplot_index);% 获取当前 subplot 中的所有 line 对象line_handles = findobj(ax, 'Type', 'line');% 确保当前 subplot 中有 4 条曲线if length(line_handles) == 4% 获取当前 subplot 的图例对象legend_obj = findobj(ax, 'Type', 'legend');% 获取图例的文本内容if ~isempty(legend_obj)legend_text = get(legend_obj, 'String');elselegend_text = cell(1, 4);for i = 1:4legend_text{i} = ['Curve ' num2str(i)];endendfprintf('Subplot %d 中各曲线的 RMS 值:\n', subplot_index);for line_index = 1:4% 获取第 line_index 条曲线的数据line_handle = line_handles(line_index);x = get(line_handle, 'XData');y = get(line_handle, 'YData');% 过滤掉无效值(如 NaN)valid_indices = ~isnan(y);valid_y = y(valid_indices);% 计算 RMS 值rms_value = rms(valid_y);% 显示结果fprintf(' %s 的 RMS 值为: %.4f\n', legend_text{line_index}, rms_value);endelseerror(['Subplot ' num2str(subplot_index) ' 中曲线数量不为 4 条。']);endend
elseerror('图中 subplot 数量不为 8 个。');
end% 关闭图形
close(fig);