在MATLAB中消除与列对应的行中为零的值

在MATLAB中消除与列对应的行中为零的值,matlab,rows,threshold,Matlab,Rows,Threshold,我有一个我正试图分析的数据矩阵。我有一个数据,我应用了一些处理部分,我设法获得了一些低于某个级别的信息,就像试图对其应用阈值一样。所以在我应用阈值后,数据变为0点。所以我想知道是否有一种方法可以消除这些点,而不在它们之间留下0。这就是图中带0的样子 我试图在没有间隙的情况下绘制它,X轴是时间,y轴是振幅。那么,这是否有可能仅仅绘制蓝色的事件和时间 %Find time N = size(prcdata(:,1),1); t=T*(0:N-1)'; figure; plot(t,U); t1=t

我有一个我正试图分析的数据矩阵。我有一个数据,我应用了一些处理部分,我设法获得了一些低于某个级别的信息,就像试图对其应用阈值一样。所以在我应用阈值后,数据变为0点。所以我想知道是否有一种方法可以消除这些点,而不在它们之间留下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);
%%删除为零的行和列
B1=绘图1(绘图1
那么,这是否有可能仅仅绘制蓝色的事件和时间

%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 
如果发生时间对您不重要,则以下措施将起作用:

A=A>阈值;
之后,将代码更改为

plot_vals=a(A);
figure; 
plot(plot_vals);
如果发生时间很重要,则可以尝试使用绘图的
'XTick'
'XTickLabel'
属性以编程方式设置x记号和标签

获取相应的感兴趣时间,如下所示:

t2=t1(A);
这将让您了解如何使用5个等距的记号来进行此操作:

xTickLabels = t2(floor(linspace(1,t2(end),5)));
xTicks = floor(linspace(1,numel(plot_vals),5));
plot(plot_vals);
set(gca,'XTick',xTicks,'XTickLabel',xTickLabels); % gca gets current axis handle

确定感兴趣的时间点是一门艺术,因为蓝色片段不会以相同大小的簇出现。

如果只想显示高于阈值的点,可以使用,并将不需要的点的值设置为:


这个
NaN
似乎在工作……谢谢你,有没有办法把它作为散点图?而不是使用线性图?@Matlaber:是的,用
散点
代替
散点
。就像散点(t1,a)?@Matlaber:是的。我还在想,是否有办法得到红色曲线和相应的时间段(从你的插图中)消除蓝色曲线和从3秒到6秒的时间?比如说,红色曲线在2.5秒结束后,紧接着我们将有5.9-6秒的红色曲线?我们可以在代码中这样做吗?我将尝试XTick,但在我的矩阵中,振幅和时间在不同的位置,这仍然适用于XTick吗?是的,这是ess从本质上说,这是我建议的一种黑客行为,但正是出于这个原因,我使用了它。我将用一个例子更新我的答案。好的,谢谢你。我还不确定如何使用XTick函数。当我运行你建议的代码时,它返回了一个错误,即使用绘图时出错Line类上没有XTick属性。stackoverflow1中的错误(第77行)plot(plot_vals,'XTick',xTicks,'XTickLabel',XTickLabel);很抱歉,这些是轴属性而不是线属性。看起来你找到了想要的答案,但我还是会更正帖子。
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);