Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MATLAB中数据的删除/处理_Matlab_Replace - Fatal编程技术网

MATLAB中数据的删除/处理

MATLAB中数据的删除/处理,matlab,replace,Matlab,Replace,我有一个小问题,一些肌电图数据,我必须分析的出版物,我的工作 我有一列包含13000个数据点的数据,例如 0 0 0 1.2 2.5 3.9 6.8 5.3 2.9 1.5 500 ... and so on. 现在我遇到的问题是,在这个数据集中,有很多点,比如数据中出现的500点。这些不是错误的数据,它们只差1000倍 我的问题是如何解决这些数据点。我可以使用以下脚本删除它们 A = (filename) A(A>100)=NaN 不幸的是,我对Matlab非常陌生,所以我希望有人能

我有一个小问题,一些肌电图数据,我必须分析的出版物,我的工作

我有一列包含13000个数据点的数据,例如

0
0
0
1.2
2.5
3.9
6.8
5.3
2.9
1.5
500
... and so on.
现在我遇到的问题是,在这个数据集中,有很多点,比如数据中出现的500点。这些不是错误的数据,它们只差1000倍

我的问题是如何解决这些数据点。我可以使用以下脚本删除它们

A = (filename)
A(A>100)=NaN
不幸的是,我对Matlab非常陌生,所以我希望有人能帮助我使用一个脚本,它不是用NaN替换错误的数字,而是将它除以1000,以正确的单位生成一个数字

非常感谢

大卫

我们找到
A>100

(A(A>100))
我们取这些指数的值,然后按元素将它们除以1000

A(A>100)./1000
然后把它们分配回来

A(A>100) = A(A>100)./1000; 

A'
ans =

   0.00000
   0.00000
   0.00000
   1.20000
   2.50000
   3.90000
   6.80000
   5.30000
   2.90000
   1.50000
   0.50000
理解逻辑索引 你用这个命令做什么

A=(文件名)
A(A>100)=NaN
被称为。您基本上是在构建一个大小为
numel(a)
的临时逻辑向量(布尔、0和1),将每个元素
>100
设置为
1
,将其他每个元素设置为
0
。然后使用此临时逻辑数组对向量
A
进行索引。执行此操作时会发生什么情况
A(A>100)
,即仅选择
A
中与逻辑向量中设置为
1
的项相对应的项。为了完整起见,给定

>A=[0 0 1.2 101 3.9 6.8 500];
>>索引=A>100
索引=[0 0 1 0 1]
>>A(索引)%A等于A(A>100)
ans=[101500]
缩小你的价值观 理解了这一点后,接下来要做的是将
NaN
赋值给所选值:
A(A>100)=NaN
。不必这样做,您可以根据您需要的任何因素将其缩小,
1000
在您的案例中:

>A=[0 0 1.2 101 3.9 6.8 500];
>>索引=A>100
索引=[0 0 1 0 1]
>>A(索引)%A等于A(A>100)
ans=[101500]
>>A(索引)=A(索引)。/1000
A=[0 0 1.2 0.101 3.9 6.8 0.500]
删除值 因为你说你是Matlab新手,所以我要补充一点,将元素分配给
NaN
并不会将它们从向量中移除。您所做的可能对您有用,因为您正在绘制这些数据,而Matlab的
plot()
函数不会绘制值为
NaN
的数据点

从向量中删除数据的正确方法是将其分配给空值
[]
,如下所示:

>A=[0 0 1.2 101 3.9 6.8 500];
>>索引=A>100
索引=[0 0 1 0 1]
>>A(索引)%A等于A(A>100)
ans=[101500]
>>A(索引)=[]
A=[001.23.96.8]

为什么不能用
A(A>100)=A(A>100)。/1000
替换NaN分配?您可能应该解释为什么您所做的工作有效,而不仅仅是发布代码。教这个人钓鱼虽然我认为你可以做得比@JoErNanO演示的要少(很多),但我同意至少添加1或2行来描述你的解决方案是很好的。@DennisJaheruddin记得OP说他对Matlab非常陌生。因此(尽管过分)冗长
A(A>100) = A(A>100)./1000; 

A'
ans =

   0.00000
   0.00000
   0.00000
   1.20000
   2.50000
   3.90000
   6.80000
   5.30000
   2.90000
   1.50000
   0.50000