所以我有两个信号signal1和signal2,两个信号都是用以下信号启动的:
signal1=zeros(x,1)
和signal2=zeros(y,1)
。
信号1的数据看起来像这样
1.0000+1.0000i
1.0000-1.0000i
1.0000+1.0000i
1.0000-1.0000i
0.0000 + 0000i
0.0000 - 0000i
我的第一个问题是如何过滤掉值0+0i
如何比较两个信号的位以找出错误?
答案 0 :(得分:1)
这感觉就像是家庭作业,我讨厌完全解决家庭作业。也许这会有所帮助。
你提到位,所以我猜测“信号”是某种调制数据。我只是从示例数据中猜测QPSK。 QPSK中的P表示相位。我有两个形式为
的函数 x1=exp(j*m1(t))
和
x2=exp(j*m2(t)),
其中m1(t)和m2(t)表示在复信号的相位中编码的消息。我真的只想进入m1(t)-m2(t)吗?
虽然你可以单独考虑它们的角度,但是你会遇到没有定义角度的0的麻烦。
我提供了两个公理,指引你朝着我想去的方向前进。
conj(e(ja)) = e(-ja)
a^b * a^c = a^(b+c)
如果您不熟悉matlab帮助“操作”,那么“查找”的帮助可能是最好的开始。许多新人都没有理解*
和.*
之间的区别,尽管这往往是基于他们有多少线性代数背景。后来准备好让matlab和其他人告诉你你做了一些事情,发现你可以用其他方式更有效地做,但从概念上讲,我认为find是一个更容易的起点。
idx=find(abs(a-b)<.001)
idx=find(abs(a-zero)<.001) | abs(b-zero)<.001 )
返回find的表达式为true的索引向量。
apuntured = A; apuntured [IDX] = []; bpunctured = B; bpunctured [IDX] = [];
删除给定索引处的值并打包生成的向量。
对于复数值,函数real()
,imag()
,abs()
和angle()
提取矩形和极坐标组件。
答案 1 :(得分:0)
要摆脱零信号,你可以绕过你的信号1。这样的事情(虽然未经测试)
signal3=0;
j=0;
for i=1:size(signal1)
if(real(signal1(i))==0 && imag(signal1(i))==0)
signal3(j)=signal(i)
j=j+1;
end
end
signal1=signal3;