马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
我编了个程序想验证下线性方程组求解
但是结果不对
需要解的方程组如下所示
要求解P1,P2,P3,P4
H(w1),H(w2),H(w3),H(w4)
是由要求解的已知的公式求出来的
应该解方程结果和我所用的P1,P2,P3,P4是一样的
但是结果不一样
程序如下:
clc;
clear;
N0 = 2048;
fs = 10e6;
f0 = fs/N0;
Omega0 = 2*pi*f0;
Omega = [0:N0-1]*Omega0;
P = [0.575 0.362 0.057 0.006];
tau = [ 0 0.2e-6 0.4e-6 0.6e-6];
H_calcu = P(1)*exp(-j*Omega*tau(1)) ... % 我用这个公式生成的数据
+ P(2)*exp(-j*Omega*tau(2)) ...
+ P(3)*exp(-j*Omega*tau(3)) ...
+ P(4)*exp(-j*Omega*tau(4));
H_calcu_abs = abs(H_calcu);
seq = 1:4; % 因为要求解P(1)...P(4)四个参数,所以选择4个数据
Omega_x = Omega(seq); % 对应公式中用到的Omega也取对应的4个数据
H = H_calcu(seq);
% 下面解方程组,计算结果与我所使用的P(1)...P(4)不同
W_matrix = [exp(-j*Omega_x(1)*tau(1)) exp(-j*Omega_x(1)*tau(2)) exp(-j*Omega_x(1)*tau(3)) exp(-j*Omega_x(1)*tau(4)); ...
exp(-j*Omega_x(2)*tau(1)) exp(-j*Omega_x(2)*tau(2)) exp(-j*Omega_x(2)*tau(3)) exp(-j*Omega_x(2)*tau(4)); ...
exp(-j*Omega_x(3)*tau(1)) exp(-j*Omega_x(3)*tau(2)) exp(-j*Omega_x(3)*tau(3)) exp(-j*Omega_x(3)*tau(4)); ...
exp(-j*Omega_x(4)*tau(1)) exp(-j*Omega_x(4)*tau(2)) exp(-j*Omega_x(4)*tau(3)) exp(-j*Omega_x(4)*tau(4)) ];
H_tau = H;
Pl = (inv(W_matrix)*H_tau')';
不知道这是怎么回事?高手帮帮忙吧
谢谢
[ 本帖最后由 eight 于 2007-9-12 11:21 编辑 ] |