基于索引的替换:如何按条件更新prob向量并保留未变换元素?
解决方案
你可以直接利用已得到的逻辑索引 index 完成批量赋值,无需额外循环操作,具体代码如下:
% 你已完成的步骤 index = rawRT > 0; prob_temp = prob(index); prob_transform = your_transform_function(prob_temp); % 替换为你的实际变换函数 % 核心替换操作 prob(index) = prob_transform;
原理说明
- 逻辑索引
index标记了所有rawRT>0的位置,执行prob(index) = prob_transform时,Matlab会自动将prob_transform的元素按顺序对应到prob中index为true的位置。 - 所有
index为false的位置(即rawRT=0对应的prob元素)会保持原有值不变,完全匹配你的需求。
举个小型验证示例:
假设:
rawRT = [354; 521; 0; 428]; prob = [0.82; 0.75; 0.59; 0.27]; index = rawRT > 0; % 得到 [true; true; false; true] prob_temp = prob(index); % 得到 [0.82; 0.75; 0.27] prob_transform = prob_temp * 2; % 示例变换:数值翻倍,得到 [1.64; 1.5; 0.54] prob(index) = prob_transform;
执行后prob会变为:
1.64 1.50 0.59 0.54
可见第3个元素(对应rawRT=0)确实保留了原值。
内容的提问来源于stack exchange,提问作者A.Rainer
相关产品推荐
相关产品推荐

