首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Matlab -提取与另一个数组中的某些值相关联的数据数组中的值。

Matlab -提取与另一个数组中的某些值相关联的数据数组中的值。
EN

Stack Overflow用户
提问于 2015-09-30 20:28:00
回答 1查看 65关注 0票数 0

我有很多大量的温度和压力数据,每个数据都包含在细胞中。当压力值最接近850时,我想找出每个相应的压力指数的温度值。压力存储在距离x高度中,产生的温度阵列需要1x距离--就像温度只需要从每个压力柱中拉出一个数字一样。

我尝试找到每个压力阵列的指数,其中值在840到860之间:

代码语言:javascript
运行
复制
for k = 1:length(hdfFiles)
  airTemp850{k} = airTemp{k}(pressure{k} > 840. & pressure{k} < 860.);
end

但有时这些数字之间没有压力值。如果我扩大了范围,它有时会覆盖多个压力柱,最后我会得到太多的温度值。

我还试图找到与850最接近的压力值,但这只能在整个压力数组中找到与850最接近的一个值。

代码语言:javascript
运行
复制
for k = 1:length(hdfFiles)
 val = 850;
 diffVal{k} = abs(minus(pressure{k}(:),val));
 [idx idx] = min(diffVal{k}) % index of closest value to 850
 closest{k} = pressure{k}(idx{k}); 
end

我想要的是matlab读取每一行压力,找到最接近850的值,并提取相应的温度值。任何帮助都是非常感谢的。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-30 22:19:06

我认为min是该走的路。当调用矩阵时,它将沿着所需的维度运行。您的错误来自于(:)的使用,它将矩阵向量化。另外,您应该使用sub2ind将矩阵索引转换为线性索引。试试这个:

代码语言:javascript
运行
复制
val = 850;
for k = 1:length(hdfFiles)
 diffVal = abs(pressure{k} - val); % no {k} if no storage need, no (:) and - seems a bit clearer than minus to me
 [~, idx] = min(diffVal, [], 2); % index of closest value to 850 along height dimension, ~ for unwanted output
 linind = sub2ind(size(pressure{k}), 1:size(pressure{k}, 1), idx);
 closest{k} = pressure{k}(linind); 
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32875017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档