如何用0替换变量数据中小于0.5的每个元素。
我尝试了这个,但它没有用。
rng(110)
data= rand(1, 1e8);
tstart = tic;
count = (data<0.5);
replace = replacedata(data,count,0);
telapsed = toc(tstart);
答案 0 :(得分:2)
什么是replacedata
?这是非常基本的matlab使用逻辑索引,如下所示:
data(data < 0.5) = 0
或者:
replace = data.*(data < 0.5) %// This only works because you are replacing the value with 0 as Matlab automatically casts logical matrices to doubles when using arithmetic.
答案 1 :(得分:2)
方法replacedata
适用于dataset
个变量。您的data
矩阵是使用rand
创建的标准Matlab矩阵。因此,replacedata
功能无法与之一起使用。
可以使用mat2dataset
从矩阵中创建dataset
类型变量,但正如Dan在回答中所解释的那样,使用逻辑索引更为简单。