matlab - 在MATLAB中查找区间内变量的平均值
问题描述
我在 MATLAB 中有一些数据。在图片上你可以看到一小部分:-
我感兴趣的数字是 RPM 和 Lambda。如您所见,它们既不是严格减少也不是严格增加(可以说它们是非线性的)。我想在 RPM 间隔中找到平均 Lambda 值,例如 250-500、500-750、1000-1250 等。但是我不知道如何在 MATLAB 中编写这样的代码,原因是我不知道这会发生在什么索引上,因为 RPM 数字并不是严格地减少/增加。
while RPM >= 1000 && RPM < 1250
Lambda_avg = sum of Lambda values in interval / number of Lambdas in interval
end
while RPM >= 1250 && RPM < 1500
...
end
我也许可以将 RPM 列从最低到最高排序,然后也相应地对 Lambda 列进行排序,尽管我也不知道该怎么做。
有什么方法可以在所有数据的某个 RPM 间隔内找到平均 lambda 值?我希望我的问题足够清楚。
解决方案
如果变量中包含 lambda 的lambda
所有值,变量中包含 RPM 的所有值RPM
,那么您只需这样做,例如
RPM1 = 1000;
RPM2 = 1500;
lambda_avg = mean(lambda((RPM >= RPM1) & (RPM < RPM2)));
单个&
进行逐个元素的 AND 比较,而单个|
进行元素 OR 的比较。
例如,如果您的数据被组织为一个名为 的 MATLAB 表data
,那么您可以执行
lambda_avg = mean(data.lambda((data.RPM >= RPM1) & (data.RPM < RPM2)));
此方法利用 MATLAB 的逻辑索引功能,并允许您跳过您尝试在问题中编写的循环...
仅供参考,如果你想显式编写一个循环来计算这个平均值,你可以这样做:
lambda_avg = 0;
n_lambda = 0; % number of lambdas you found in the interval
for i = 1:numel(RPM)
if (RPM(i) >= RPM1) && (RPM(i) < RPM2)
lambda_avg = lambda_avg + lambda(i);
n_lambda = n_lambda + 1;
end
end
lambda_avg = lambda_avg / n_lambda;
推荐阅读
- php - php pdo插入不返回
- javascript - attr("disabled", false) 在 Typescript 中导致错误
- python - 在 Power BI 中使用 matplotlib 绘制的文本数量是否有限制?
- c - 从 C 函数返回状态码和指针的优雅方法
- java - 如何更改数据透视表中的默认标题背景颜色
- html - 在 iframe 中滚动时修复屏幕顶部的 div
- swift - 并行 URLSession 请求 w/ DispatchGroup 在 1 个请求上调用完成处理程序两次
- javascript - 使用 this.id 在我的计算器应用程序中显示结果时出现问题
- c# - 在 xamarin 表单中使用 Web 视图访问麦克风时出错?
- python - 为什么 Pycharm 不理解将哪些参数传递给继承的 Python 数据类'__init__?