我有一个正在尝试分析的数据矩阵。我有一个数据,我应用了一些处理部分,并且在尝试对其应用阈值时,我设法获得了低于一定水平的一些信息。因此,在我应用阈值后,数据变为 0 点。所以我想知道是否有一种方法可以消除点而不在其间留下 0。这就是带有零的数字的样子 我试图在没有间隙的情况下绘制它,X 轴是时间,y 轴是幅度。那么是否可以只绘制蓝色的事件和时间?
%Find time
N = size(prcdata(:,1),1);
t=T*(0:N-1)';
figure;
plot(t,U);
t1=t(1:length(t)/5);
X=(length(prcdata(:,4))/5);
a = U(1 : X);
threshold=3.063;
A=a>threshold;
plot_vals=a.*A;
figure;
plot(t2,plot_vals1); %gives the plot which i added with this
我还尝试使用这段代码来将没有零的事件组合在一起,但它给我的只是 0 处的直线图。
%% Eliminate the rows and colomns which are zero
B1=plot_vals1(plot_vals1 <= 0, :);
figure;
plot(B1);
还有什么办法可以把上图的散点图取掉吗?将使用 scatter(t2,plot_vals1);工作?
最佳答案
如果您只想显示那些高于阈值的点,您可以使用 logical index并将不需要的点的值设置为 NaN
:
threshold = 3.063;
index = (a <= threshold);
a(index) = NaN;
figure;
plot(t1, a);
NaN
的数据点根本不会显示,leaving a break in your plot 。这是一个简单的示例,用红色绘制正弦波的正点:
t = linspace(0, 4*pi, 100);
y = sin(t);
plot(t, y)
hold on;
index = (y < 0);
y(index) = nan;
plot(t, y, 'r', 'LineWidth', 2);
关于matlab - 消除 MATLAB 中与列对应的行中为零的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46167738/