1

给定
固定质量 ms=1;
Eta 常数 eta=0.45;
变量重复次数,例如 用于创建函数的 N=5;
omega OM=sqrt(ks/ms);
角频率 om=eta*OM;
时间周期 T=2*pi/om;
上限变量 TTT=1.5;
t=0:0.001:TTT;

我做了一个这样的功能:

kt=zeros(size(t));
for j=1:2*N+1
    n= j-(N+1);    
    if n==0
        k(j)=ks/2;
    else
        k(j)=i/pi/n;
    end
    kt=kt+k(j)*exp(i*n*om*t);
end

这是锯齿波,这是我的问题。从值为 1x1501 double 的复数向量 kt 中,我必须为变量 N制作厄米特矩阵。这意味着 N 可以是 5,可以是 50、100 等。矩阵应如下所示(图片): 厄米特矩阵

其中,k1 是 k,对于 N=1,k0 是 k,对于 N=0,或者 k-1 是 k,对于 N=-1。矩阵的大小为 2*N+1 和 2*N+1。

感谢您的帮助和回复!

4

2 回答 2

2

那是一个Toeplitz 矩阵,你可以使用toeplitz上面的命令生成矩阵。在一般情况下,这将被写成:

H = toeplitz(kt(N:end), kt(1:N + 1))

其中前N个值kt对应于k - N , ... k -1,最后N + 1 个值是k 0 , ... k N。然而,由于H是 Hermitian,这可以简化为:

H = toeplitz(kt(N:end));
于 2013-06-30T11:45:45.027 回答
1

试试这个代码:

k=[1 2+i 3+i 4+i 5+i];
N=7;
M=diag(k(1)*ones(N,1));

for j=1:length(k)-1
    M=M+diag(k(j+1)*ones(N-j,1),j)+diag(conj(k(j+1))*ones(N-j,1),-j)
end;

这里 N 应该等于或大于 k 数组的长度

于 2013-06-30T11:47:49.317 回答