我想用[{1}}替换大于A
的向量0.5
的一部分。该向量的一部分在某个时间帧NaN
之间定义。 x = ( t>=2 & t<5 )
和t
的长度相同。
到目前为止,我提出了这个问题:
A
然而它不起作用!我尝试了各种各样的东西,但没有运气。
答案 0 :(得分:2)
让我们一步一步来做。
如果你这样做:
A > 0.5
您将获得A
1
长度的A
向量,0.5
中元素的位置大于Columns 1 through 14
0 0 0 1 1 1 0 0 1 1 0 1 1 0
Column 15
1
,即:
t >= 2 & t < 5
如果你这样做:
1
你会得到类似于上面一个(相同长度)的向量,但这一次t
在某个位置会表示向量Columns 1 through 14
0 0 0 0 0 0 0 1 1 1 1 1 1 1
Column 15
0
中的特定元素位于区间 [2,5> 。矢量看起来像这样:
(A > 0.5) & (t >= 2) & (t < 5)
您可以通过要求满足以下两个条件来组合这两个向量:
Columns 1 through 14
0 0 0 0 0 0 0 0 1 1 0 1 1 0
Column 15
0
你得到了矢量:
A( logical([1 0 0 0 0 0 0 0 0 0 0 0 0 0 0]) )
请注意,那些位于前两个向量的两个中的位置!
如果你这样做:
A
你会注意到只有第一个元素从向量0.1000
中提取出来,你得到:
A( logical([1 1 0 0 0 0 0 0 0 0 0 0 0 0 0]) )
您将使用以下内容提取前两个元素:
A
等等。
如果您希望更改向量3
中某个元素的值,请将第一个和最后一个元素称为值A( logical([1 0 0 0 0 0 0 0 0 0 0 0 0 0 1]) ) = 3;
,您可以使用以下内容执行此操作:
A
从NaN
中提取所需的元素,并为其指定值A( (A > 0.5) & (t >= 2) & (t < 5) ) = NaN;
:
{{1}}
答案 1 :(得分:0)
假设:
A=[0.1 0.4 0.3 1 0.6 3 0.3 0.4 0.6 0.8 0.4 0.8 0.9 0.2 1];
t = [1 1 1 1 1 1 1 2 2 2 3 3 3 4 5];
x=(t>=2 & t<5);
您可以执行以下操作:
A (A > 0.5) = NaN;
在GNU Octave中,我最终得到了这个输出:
octave:6> disp(A)
0.10000 0.40000 0.30000 1.00000 0.60000 3.00000 0.30000 0.40000 0.60000 0.80000 0.40000 0.80000 0.90000 0.20000 1.00000