我在Matlab中有一个三维数组.第一个维度是时间,第二个维度是湿度,第三个维度是温度.如果温度值<1. 0,我希望每个后续温度值都变为NaN. 例如,如果数组是:
>> sampl = randn(4,3,2)
sampl(:,:,1) =
0.79487 0.71017 -0.39167
0.51754 -1.3068 0.84166
0.49461 0.74159 0.082784
0.66393 1.4677 0.31467
sampl(:,:,2) =
0.78981 1.3096 1.0434
-0.80122 0.16037 -1.0682
-0.32565 -2.1182 -0.31723
0.28468 0.70708 1.4797
将此转化为最有效的方法是什么:
sampl(:,:,1) =
0.79487 0.71017 NaN
0.51754 NaN NaN
0.49461 NaN NaN
0.66393 NaN NaN
sampl(:,:,2) =
0.78981 1.3096 1.0434
NaN 0.16037 NaN
NaN NaN NaN
NaN NaN NaN
具体来说,对于特定切片,我们希望沿每列处理,并且一旦我们在一列中遇到负数,我们希望该位置为NaN以及该NaN值之后的同一列的所有行位置也是NaN.
我在Matlab中有一个三维数组.第一个维度是时间,第二个维度是湿度,第三个维度是温度.如果温度值<1. 0,我希望每个后续温度值都变为NaN. 例如,如果数组是:>> sampl = randn(4,3,2)sampl(:,:,1) =0.79487 0.71017 -0.391670.51754 -1.3068 0.841660.49461 ...
找出
nan
的位置
ind_
nan
= find(is
nan
(a)); % 输出
nan
的线性索引
sub_
nan
= zeros(length(ind_
nan
), 2); % 行列式
矩阵
位置索引
for n=1:length(ind_
nan
)
[sub_
nan
(n,1),...
在
Matlab
中
,可以使用以下程序来实现这个需求:
vec = [1, 2, 3, 4, 5]; % 代表的是需要检查的列向量
threshold = 3; % 代表的是阈值
flag =
NaN
; % 初始化 flag 为
NaN
if all(vec <= threshold)
flag =
NaN
; % 如果所有
元素
都小于等于...