我有一个14秒的主信号(120000个样本),其中包含一个样本信号,我的样本信号与我分开2秒(20000个样本)(基本上是波形文件)。我想在matlab的主信号中找到采样信号的位置(即2秒信号)。
我已经尝试了上面的循环逻辑,但是产生输出所花费的时间太长了。
我不想使用matlab的内置互相关函数。
请建议一些方法,以最短的时间(不到一分钟)获得结果。
答案 0 :(得分:0)
我能想到的一种方法是,您可以将main signal
和sample signal
转换为string
并使用regexp
找出信号起点。这是一个例子:
a=randn(1,120000); % main signal
b=a(100:20100); % Sample signal
sig_str=num2str(a); % Convert main signal into string
sampl_str=num2str(b); % Convert sample signal into string
sig_split=regexp(sig_str,sampl_str,'split');
sampl_sig_start_point=length(num2str(sig_split{1}))+1;
sampl_sig_end_point=sampl_sig_start_point+length(b)-1;
希望这会对你有所帮助。
答案 1 :(得分:0)
我认为你可以摆脱所有120,000的循环。但是为了增加相关性的强度,你可以尝试将20,000个样本的前5000个样本与主要的120,000个样本相关联。如果你在某些情况下获得良好的相关性在主要的120,000个样本中,然后尝试将整个20,000个样本与120,000个样本相关联。基本上你必须在主信号中检查你信号的第一部分,如果你在某个时刻找到你的第一部分你在那一点检查完整部分..