MATLAB实现卷积可以用自带的conv函数,做了个简单的例子如下: clc;clear;close all; %% 卷积程序实例 t=1:10; y1=sin(t);y2=cos(t); y=conv(y1,y2); plot(y,'r--');
function [f,k]=sconv(f1,f2,k1,k2,p)
%计算连续信号卷积积分f(t)=f1(t)f2(t)
%f:卷积积分f(t)对应的非零样值向量
%k:f(t)的对应时间向量
%f1:f1(t)非零样值向量
%f2:f2(t)的非零样值向量
%k1:f1(t)的对应时间向量
%k2:f2(t)的对应时间向量
%p:取样时间间隔
f=conv(f1,f2);
f=fp;
k0=k1(1)+k2(1);
k3=length(f1)+length(f2)-2;
k=k0:p:k0+k3p;
subplot(2,2,1)
plot(k1,f1);
title('f1(t)');
xlabel('t');
ylabel('f1(t)');
subplot(2,2,2);
plot(k2,f2);
title('f2(t)')
subplot(2,2,3)
plot(k,f);
h=get(gca,'position');
h(3)=25h(3);
set(gca,'position',h);
title('f(t)=f1(t)f2(t)')
xlabel('t');
ylabel('f(t)')
如果你就当这两个都是从1开始的, 直接卷积掉, 结果是5个数, 第一个数就是x(1)h(1), 这也是你要的卷积当中的一个, 只是在你要的结果里,这个是x(0)h(-1) ,所以在结果的序号是-1而不是1, 所以你只要把结果平移就可以了
因为matlab不支持负数序号的数组, 所以你最好只是“在心里平移”就好了, 就是说你保存的还是这个结果, 只是写程序的时候记住了, 这个是从-1开始的
你只需要在画图的时候指定横坐标
plot(-1:3, conv(x, h))
卷机编码码率是3/4,对应的MATLAB中poly2trellis的参数应该怎么设置?或者它的框图应该怎么画?
1、poly2trellis的参数应该怎么设置?
首先,卷机编码码率是3/4,3是指输入比特流的数目K;4是输出比特流的数目N
其二,明确poly2trellis()是什么函数,该函数是将卷积码多项式转换为网格函数,其使用格式
trellis = poly2trellis(ConstraintLength,CodeGenerator)
这里,ConstraintLength—约束长度,CodeGenerator—代码生成器
例如,
trellis = poly2trellis([5 4 3],[23 35 0 21;1 0 5 13;2 5 7 0]);
[5 4 3]—根据用途来确定
[23 35 0 21;1 0 5 13;2 5 7 0]—根据用途来确定
其三,验证trellis是否符合码率3/4
K = log2(trellisnumInputSymbols)
N = log2(trellisnumOutputSymbols)
2、它的框图应该怎么画?
例如,下面为显示了一个具有两个输入流、三个输出流和七个移位寄存器的速率2/3编码器。
以上就是关于一个简单的求卷积的matlab 谁能指导下啊 不会写 x=sim2t[ε(t)-ε(t-1)] y=全部的内容,包括:一个简单的求卷积的matlab 谁能指导下啊 不会写 x=sim2t[ε(t)-ε(t-1)] y=、matlab怎样求卷积、卷机编码码率是3/4,对应的MATLAB中poly2trellis的参数应该怎么设置或者它的框图应该怎么画求解答等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)