【问题标题】:Cut ultrasound signal between specific values using Octave使用 Octave 在特定值之间切割超声信号
【发布时间】:2020-02-03 03:10:29
【问题描述】:

我有一个超声波(图轴:伏特与微秒),需要在两个特定值之间切割信号/波以进一步分析此削波。我的想法是切断 0.2 V(y 轴)之间的信号。波形为正弦形as shown in the figure with the desired cutoff points in red

在我当前的代码中,我在 1900 到 4000 毫秒(x 轴)(Aa = A(1900:4000);)之间剪切信号,然后我想进行上述剪切并继续执行代码。

有谁知道我怎么做这个 y 轴剪裁?

谢谢!! :)

clear
clf
pkg load signal
for k=1:2
  w=1
  filename=strcat("PCB 2.1  (",sprintf("%01d",k),").mat") 
  load(filename)
  Lthisrun=length(A);
  Pico(k,1:Lthisrun)=A;


  Aa = A(1900:4000);



  Ah= abs(hilbert(Aa));

  step=100;
  hold on
i=1;
Ac=0;
      for index=1:step:3601
          Ac(i+1)=Ac(i)+Ah(i);  
          i=i+1
          r(k)=trapz(Ac)
      end
end

【问题讨论】:

  • 你能澄清一下你想剪/剪什么/在哪里吗?正如你所说,你目前在时间轴上剪掉了一个部分。但是然后你说你想在两个特定的出租车值之间切断信号,但只给出一个值(0.2V)。理想情况下,您希望在完成裁剪后分析该图表的哪一部分?您是否要切断低于 0.2 伏的所有电压? (摆脱近乎零的噪音?)
  • 是的,完全正确。我正在尝试将所有电压都降低到 0.2 伏以下,并且只使用 0.2 伏以上的数据。感谢您的回复。

标签: octave


【解决方案1】:

好的,您只想查看数据中“高于噪音”的值。或者,在这种情况下,“剪掉”低于 0.2V 的所有内容。最简单的方法是使用逻辑索引。您可以获取一个数组并创建一个子数组,以消除不满足特定逻辑条件的所有内容。看这个例子:

f = @(x) sin(x)./x;
x = [-100:.1:100];
y = f(x);
plot(x,y);

figure;
x_trim = x(y>0.2);
y_trim = y(y>0.2);
plot(x_trim, y_trim);

从您的问题来看,您似乎想在应用 1900-4000 的水平窗口后进行剪辑。 (你说那是以毫秒为单位,但你的图像显示脉冲比 1900 毫秒快得多)。无论如何,像

Ab = Aa(Aa > 0.2);

将创建另一个数组Ab,它只包含 Aa 中值大于 0.2 的部分。如果您的 x 数据不仅仅是元素索引,您可能需要对水平轴执行类似的操作(参见示例)。

【讨论】:

  • 非常感谢!这正是我所需要的。
猜你喜欢
  • 1970-01-01
  • 2020-10-27
  • 2022-11-18
  • 2013-02-23
  • 1970-01-01
  • 2016-07-16
  • 1970-01-01
  • 2021-06-20
  • 1970-01-01
相关资源
最近更新 更多