无法在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)代码>根据您的解释,语法和想法是正确的。