Como encontrar a convolução circular MOD-2 para as duas seqüências e .
Eu sei que a resposta é 0 do matlab, mas não sei como encontrá-la gráfica ou matematicamente
Como encontrar a convolução circular MOD-2 para as duas seqüências e .
Eu sei que a resposta é 0 do matlab, mas não sei como encontrá-la gráfica ou matematicamente
Respostas:
Escreva e calcule h (z) \ bmod (z ^ 2-1 ) , ou seja, divida por e tome apenas o restante. Embora isso pareça muito complicado, se você pensar um pouco, verá que tudo o que você está fazendo é dividir em e e adicionando os vetores mais curtos para obter . Repita para para adicionar quatro vetores de comprimento para obter . Presumivelmente, isso não é muito difícil de fazer no MATLAB, embora eu não esteja familiarizado o suficiente com a sintaxe para sugerir comandos específicos. Em seguida, calcule a convolução cíclica de e preferência sem chamar as funções MATLAB. O resultado é
Matematicamente, o que você está fazendo é computar que pode ser feito de maneira fantástica ao encontrar primeiro usando FFTs e o que você seguiu. (isso efetivamente divide o vetor longo em pedaços curtos e os adiciona), ou mais simplesmente computando primeiro e (dividindo em vetores mais curtos e adicionando-os) e calculando a convolução cíclica que é fácil de fazer.
Chop-add-convolve é mais fácil do que convolve-chop-add
Uma abordagem é "embrulhar" uma convolução circular em tamanho real:
sum(reshape(ifft(fft(x, 8) .* conj(fft(h, 8))), 2, 8 / 2), 2)
Outra implementação é dizimar diretamente a FFT:
N = 2;
Xf = fft(x); Xf = Xf(1:length(Xf) / N:end);
Hf = fft(h); Hf = Hf(1:length(Hf) / N:end);
ifft(Xf .* conj(Hf))
Se o que você deseja reproduzir é o comportamento do cconv do matlab, talvez seja melhor apenas olhar para o código-fonte nos arquivos matlab :)