在循环中跳过NaN

24个视图(过去30天)
赖安·休斯
赖安·休斯 2021年4月9日
回答: KSSV 2021年4月9日
大家好,目前正在为我在uni的模块做一个项目,我们必须从某些台站的地震数据中获得振幅的平均值。每个文件包含一个台站的数据,带有一个名为“seis”的数组。数组中的每一列代表一天,但有些列有NaN值(出于某种原因,地震仪没有记录)。我无法编辑NaN,否则它将偏离振幅平均值,因此我只想跳过循环中的那天(列),但我似乎无法理解,因为每次运行循环时,我都会收到一个错误代码,上面写着“使用“周期图”时出错”,预期x是有限的”
我知道我可能需要使用“if”语句,但是我不知道该输入什么,这样它就会跳过NaN列。下面是代码:
日平均值=[];
对于i=1:1:240
[amp,freq]=周期图(detrend(seis(:,i))、[]、[]、Fs);
F_freq=find(freq>=4&freq<=14);
F_amp=amp(F_频率);
av_amp=平均值(F_amp);
每日平均值=[每日平均值];
终止
如果有帮助的话,NaN在第209列中,但是我将对其他文件使用相同的代码,其中NaN在其他列中。
我是Matlab新手,所以非常感谢你们提供的任何帮助,提前谢谢你们!

答复(1)

KSSV
KSSV 2021年4月9日
A=兰特(5);%演示数据
A(:,2)=NaN;%用NaN替换列
对于i=1:5
如果any(isnan(A(:,i)))
fprintf(“%d”列具有NaN\n,i)
终止
终止
2列有NaN

下载188bet金宝搏


释放

R2021a

社区寻宝

在MATLAB Central中查找宝藏,了解社区如何帮助您!

开始打猎吧!