无法在MATLAB中生成系数矩阵

时间:2017-02-25 20:54:48

标签: matlab matrix fft ifft

我有以下代码片段,我正在尝试计算系数矩阵a_k来解决线性系统以获得h[n]的脉冲响应。我正在使用逆快速傅立叶变换。

N = 9; % period is chosen to be 16
n = 0:N-1; %vector for x must start at n = 0
for k = 1:9
    y3 = zeros(1,9);
    y3(k+1) = N/2;
    y3(N - k + 1) = N/2;  
end
x3 = ifft(y3);

figure;
subplot(2,2,1);stem(n,real(x3));xlabel('n'); //line 52
ylabel('real(x3)');axis([0 N-1 -1 1]);
subplot(2,2,2);stem(n,imag(x3));xlabel('n');
ylabel('imag(x3)');axis([0 N-1 -1 1]);
subplot(2,2,3);stem(n,real(y3)/N);xlabel('k');
ylabel('real(a_k)');axis([0 N-1 -1 1]);
subplot(2,2,4);stem(n,imag(y3)/N);xlabel('k');
ylabel('imag(a_k)');axis([0 N-1 -1 1]);

但是,当我运行此代码时,我收到以下错误:

Error using stem (line 43)
X must be same length as Y.

Error in fft_examples (line 52)
subplot(2,2,1);stem(n,real(x3));xlabel('n');

我不确定我在哪里犯错。我知道k的矩阵是从1到9.因此,我做了一个for循环。 y值变得不匹配。

1 个答案:

答案 0 :(得分:0)

size(real(x3))  % --> 1 10
size(n)         % --> 1 9

所以它们的大小不一样。您正在y3(k+1) = N/2;

中增加y3的大小

另外,为什么要在每次迭代中创建矩阵y3:y3 = zeros(1,9);