我有很多大量的温度和压力数据,每个数据都包含在细胞中。当压力值最接近850时,我想找出每个相应的压力指数的温度值。压力存储在距离x高度中,产生的温度阵列需要1x距离--就像温度只需要从每个压力柱中拉出一个数字一样。
我尝试找到每个压力阵列的指数,其中值在840到860之间:
for k = 1:length(hdfFiles)
airTemp850{k} = airTemp{k}(pressure{k} > 840. & pressure{k} < 860.);
end
但有时这些数字之间没有压力值。如果我扩大了范围,它有时会覆盖多个压力柱,最后我会得到太多的温度值。
我还试图找到与850最接近的压力值,但这只能在整个压力数组中找到与850最接近的一个值。
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的值,并提取相应的温度值。任何帮助都是非常感谢的。谢谢!
发布于 2015-09-30 22:19:06
我认为min
是该走的路。当调用矩阵时,它将沿着所需的维度运行。您的错误来自于(:)
的使用,它将矩阵向量化。另外,您应该使用sub2ind
将矩阵索引转换为线性索引。试试这个:
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
https://stackoverflow.com/questions/32875017
复制相似问题