无法在MATLAB中生成系数矩阵

无法在MATLAB中生成系数矩阵,matlab,matrix,fft,ifft,Matlab,Matrix,Fft,Ifft,我有下面的一段代码,我试图计算系数矩阵,a_k来求解线性系统,以获得脉冲响应。我用的是快速傅里叶逆变换 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

我有下面的一段代码,我试图计算系数矩阵,
a_k
来求解线性系统,以获得脉冲响应。我用的是快速傅里叶逆变换

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。因此,我为循环做了一个
。y值变得不匹配

size(real(x3))  % --> 1 10
size(n)         % --> 1 9
所以它们的大小不一样。您在
y3(k+1)=N/2中增加了y3的大小


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

您能在代码中标记第43行和第52行吗?当指定一个超出边界的值时,Matlab将自动展开矩阵或向量。例如,
t=[1,2]
t(3)=3
给出了
t=[1,2,3]
。线
y3(k+1)=N/2
将始终在最后一个循环中为第43行的
k=9
分配第十个值,它在实际
stem
定义中表示第43行。不是在代码本身中。嗯,所以如果我的
H(e^{…})
在9个周期内有以下值,我可以只得到以下值吗<代码>y3=[1 1 0 0 1 1];x3=ifft(y3)
是频域还是空间中的
y3
y3
是频域如果您确定
ifft
是您想要做的,您可以简单地这样做:
x3=ifft(y3)根据您的解释,语法和想法是正确的。