我有一个图中有一些噪声成分。 我打算从该图中选择数据,最好是在阈值以上,我打算将其在Y轴上保持在2.009。 并绘制仅在其上方的线。 如果下面有任何内容,我希望将其绘制为0。如图所示

在此处输入图片说明

t1=t(1:length(t)/5);  
t2=t(length(t)/5+1:2*length(t)/5);
t3=t(2*length(t)/5+1:3*length(t)/5);
t4=t(3*length(t)/5+1:4*length(t)/5);
t5=t(4*length(t)/5+1:end);
X=(length(prcdata(:,4))/5);
a = U(1 : X);
b = U(X+1: 2*X);
c = U(2*X+1 : 3*X);
d = U(3*X+1 : 4*X);
e = U(4*X+1 : 5*X);
figure;
subplot (3,2,2)
plot(t1,a);
subplot (3,2,3)
plot(t2,b);   
subplot(3,2,4)
plot(t3,c);
subplot(3,2,5)
plot(t4,d);
subplot(3,2,6)
plot(t5,e);
subplot(3,2,1)
plot(t,prcdata(:,5));
figure;
A=a(a>2.009,:);
plot (t1,A);

此代码将数据分割(在图像中,每2.8秒将其分成5个,我打算在前2.8秒中使用阈值。另外,我还有另一个代码,但是我不确定它是否有效,因为需要花费很长时间进行分析

figure;
A=a(a>2.009,:);
plot (t1,A);
for k=1:length(a)
    if a(k)>2.009
        plot(t1,a(k)), hold on
    else 
        plot(t1,0), hold on
    end
end
hold off

#1楼 票数:2 已采纳

问题是您试图绘制潜在的数千次绘图,并将数千个点添加到绘图上,这会导致计算机上出现严重的内存和图形问题。 您可以做的一件事是预处理所有信息,然后一次绘制所有信息,这将大大减少时间。

figure
threshold = 2.009;
A=a>threshold; %Finds all locations where the vector is above your threshold
plot_vals = a.*A; %multiplies by logical vector, this sets invalid values to 0 and leaves valid values untouched
plot(t1,plot_vals)

由于MATLAB是一种高度矢量化的语言,由于缺少for循环,该格式不仅计算速度更快,而且由于图形引擎不需要单独处理数千个点,因此在计算机上的使用强度也大大降低。

MATLAB处理图的方式与每条线的处理相同。 绘制矢量时,MATLAB能够将矢量简单地存储在一个地址中,并在绘制时调用一次。 但是,当单独调用每个点时,MATLAB必须将每个点存储在内存中的单独位置,然后分别调用所有它们,并以图形方式完全独立地处理每个点。

每个请求在这里是编辑图(t1(A),plot_vals(A))

  ask by Matlaber translate from so

未解决问题?本站智能推荐:

1回复

按阈值提取向量中的值

我有一个向量 现在,我将阈值设置为T = 0.95,这意味着 然后,我可以选择E [1]和E [3]作为选择值。 你能告诉我我该怎么做吗?
2回复

如何在Matlab中设置检测阈值的值?

我是Matlab的新手。 我有一幅画,其中包括一幢建筑物,一个人,一条小河和一些树木。 我需要设置绿色带的阈值(我猜想)以检测具有侵蚀膨胀等的树木。但是,我似乎甚至无法对图像的颜色进行直方图绘制。 我认为图片中的所有其他对象也都有一些绿色(我使用myImage(:,:,2)<130)
2回复

Matlab - 如何对具有多个阈值的灰度图像进行二值化?

我正在尝试将灰度图像转换为具有两个阈值的二值图像: img = 灰度图像 b = 输出二值图像 如果 (img > t1) 或 (img < t2) 那么 b = 1 否则 b = 0 t1 = 200; t2 = 100; src = imread('an rgb
1回复

选择阈值以计算Matlab中两个图像之间的相似度

为了计算查询图像特征与每个图像数据库特征与显示(与用户的n个相似度图像)之间的距离(D)。 我尝试使用以下方法: 我选择两个阈值(T1, T2) 。 对于第一个I保留所有的距离( D2 ),其是比(较大T1在一个变量说() L1 ),并保持所有的距离( D2 ),其是比(较小T2在
1回复

使用阈值处理的对象检测

我正在使用matlab编写一个程序来检测一系列图像中的对象。 我试图探测到一个红球的对象。 首先,我尝试使用阈值来分割图像中的球,但我不能这样做。 我无法摆脱球下的影子。 任何想法如何摆脱球下的小部分? 我的第二个问题是,我想确保我正在寻找的物体是一个红球。 我的代码将检
1回复

图像局部阈值

我有一个要使用局部阈值进行分割的图像。 这需要执行以下步骤: 首先将图像分割成许多子图像 通过计算每个子图像内的平均值实现局部阈值 通过将每个像素值与子图像局部平均值的值进行比较,将图像矩阵转换为二进制: 如果像素值大于或等于局部平均值,则像素值=
1回复

将2D阈值应用于3D阵列

使用大小为20x30的地理网格,我有两个(温度)变量: 大小为20x30x100的数据A 和一个大小为20x30的threshold 我想将阈值应用于数据,即切出A中高于threshold ,每个网格点都有自己的阈值。 由于这将为每个网格点提供不同数量的值,因此我想用零填充其余
1回复

具有单个阈值的Canny边缘检测器

我正在尝试将一些Matlab代码移植到C ++。 我碰到过这条线: 样本图像的输出是全黑图像。 我想使用cv :: Canny重现相同的行为。 低阈值和高阈值应使用什么值? 样品: 输出: