Если вы посмотрите на справку для csvread
, вы увидите, что это просто оболочка для dlmread
.
Эта функция эквивалентна
X = dlmread (FILENAME, "," , DLM_OPT1, ...)
Любые необязательные аргументы передаются непосредственно в 'dlmread'
Справка dlmread
описывает необязательнуюпараметр 'emptyvalue'
, позволяющий указать, что будет сделано с пустой записью в файле.
-- DATA = dlmread (FILE, SEP, RANGE)
-- DATA = dlmread (..., "emptyvalue", EMPTYVAL)
...
Параметр emptyvalue может использоваться дляукажите значение, используемое для заполнения пустых полей. По умолчанию это ноль. Обратите внимание, что любые нечисловые значения, такие как текст, также заменяются на «пустое значение».
Используя этот параметр, вы можете вставить любое желаемое числовое значение. Сюда входят такие значения, как Inf и NaN, которые можно использовать для фильтрации данных перед построением графика, если это именно то, что вы хотите сделать.
>> dlmread('testdata.dat')
ans =
0.59000 0.09000 1.12000 0.10600
0.23000 0.09000 0.88000 0.10400
0.00000 0.00000 0.02000 0.10500
>> dlmread('testdata.dat','emptyvalue',999)
ans =
0.590000 0.090000 1.120000 0.106000
0.230000 0.090000 0.880000 0.104000
999.000000 999.000000 0.020000 0.105000
>> dlmread('testdata.dat','emptyvalue',inf)
ans =
0.590000 0.090000 1.120000 0.106000
0.230000 0.090000 0.880000 0.104000
Inf Inf 0.020000 0.105000
>> dlmread('testdata.dat','emptyvalue',nan)
ans =
0.590000 0.090000 1.120000 0.106000
0.230000 0.090000 0.880000 0.104000
NaN NaN 0.020000 0.105000
Похоже, что команда plot игнорирует как NaN, так и inf,Для этого я бы рекомендовал NaN.
>> M = dlmread('testdata.dat','emptyvalue',nan)
M =
0.590000 0.090000 1.120000 0.106000
0.230000 0.090000 0.880000 0.104000
NaN NaN 0.020000 0.105000
>> x1 = M(:,1); y1 = M(:,2); x2 = M(:,3); y2 = M(:,4);
>> plot(x1,y1,"or", x2,y2,"*")
![plot with blanks as NaN](https://i.stack.imgur.com/zwgFJ.png)