Plot 如何防止八度音程在csvread中将空白项作为零?
我有一个csv文件,其中包含许多x和y列,我想在单个图形中绘制这些列。但是,不同列中的数据点数量不同,这些空白值在CSV文件中用逗号表示,并且倍频程将它们取为(零,零) 如何忽略空白 这就是这样一个CSV文件(列表示x1、y1、x2、y2) 这是八度代码Plot 如何防止八度音程在csvread中将空白项作为零?,plot,octave,Plot,Octave,我有一个csv文件,其中包含许多x和y列,我想在单个图形中绘制这些列。但是,不同列中的数据点数量不同,这些空白值在CSV文件中用逗号表示,并且倍频程将它们取为(零,零) 如何忽略空白 这就是这样一个CSV文件(列表示x1、y1、x2、y2) 这是八度代码 function getdata() M = csvread("filename.csv"); x1 = M(:,1); y1 = M(:,2); x2 = M(:,3); y2 = M(:,4); figure 1; plot(x1,y1,
function getdata()
M = csvread("filename.csv");
x1 = M(:,1);
y1 = M(:,2);
x2 = M(:,3);
y2 = M(:,4);
figure 1;
plot(x1,y1, "or", x2,y2, "*")
这就是我得到的情节。请注意,(0,0)中有一个我不想要的数据点。如果您查看
csvread
的帮助,您将看到它只是dlmread
的包装
此函数相当于
X = dlmread (FILENAME, "," , DLM_OPT1, ...)
任何可选参数都直接传递给“dlmread”
dlmread
帮助描述了一个可选参数'emptyvalue'
,该参数允许您指定如何处理文件中的空条目
“emptyvalue”选项可用于指定用于
填充空字段。默认值为零。请注意,任何非数字
文本等值也被“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,"*")
相反,您应该发布一些示例CSV行,显示您的代码和结果,并且想要的结果F和NaN在绘图中是不同的。如果使用连接点的直线进行打印,则可以看到差异。根本不绘制NaN,在直线上形成一个间隙。Inf在无穷远处绘制,使线向上并离开绘图。
>> 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
>> 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,"*")