在MATLAB中使用基于零的矩阵

在MATLAB中使用基于零的矩阵,matlab,matrix,Matlab,Matrix,下列方程式在实际应用中是否可行 假设我们给出了长度n的数据,我们要考虑一些L nbMUs之间的线性方程,求系数AI。这可能吗?因为如果是,那么系数可以通过 a = pinv(D)*d 其中D是给定的矩阵,D是左向量 上述方程来自以下线性模型 k = L, L+1, L+2, N-1 我已经用一些固定的f测试了这段代码 unction [a] = find_coeficient(y,N,L) Lp = L + 1; Np = N + 1; d = y(L:N-1); D=[]; for

下列方程式在实际应用中是否可行

假设我们给出了长度n的数据,我们要考虑一些L nbMUs之间的线性方程,求系数AI。这可能吗?因为如果是,那么系数可以通过

a = pinv(D)*d
其中D是给定的矩阵,D是左向量

上述方程来自以下线性模型

k = L, L+1, L+2, N-1

我已经用一些固定的f测试了这段代码

unction [a] = find_coeficient(y,N,L)
Lp = L + 1;
Np = N + 1;
d = y(L:N-1);
D=[];
for ii=Lp:(Np-1)
    % Index into the y vector for each row of D
    D = vertcat(D, y(ii:-1:(ii-Lp+1))');
end
a = D\d;
end

这是正确的吗?

这是绝对可能的。但是,本机不支持0索引。您需要通过让每个元素中的索引为
index+1
来进行“变量更改”。这里有一个例子:

% Generate some data
N = 40;
y = 10 * randn(N,1);
% Select an L value
L = N - 4 + 1;
d = y(L:N);
D = reshape(y,4,10);
% Solve the equation using the '\' rather than the pseudo inverse
b = D\d
有关除法运算符的详细信息,请参见

好的,我已经仔细考虑过了。这里的部分困惑是这个问题。替换应用于索引变量,数据的大小,因此
L
N
不变,但调整索引以防止其从数组边缘脱落。因此,在公式中,只需在每个元素索引中添加1

y[L] = [ y[L-1] y[L-2] ... y[0] ] * a1
.
.
y[N-1] = [ y[N-2] y[N-3] ... y[N-L-1] ] * aL
变成:

y[L+1] = [ y[L-1+1] y[L-2+1] ... y[0+1] ] * a1
.
.
y[N-1+1] = [ y[N-2+1] y[N-3+1] ... y[N-L-1+1] ] * aL

=

y[L+1] = [ y[L] y[L-1] ... y[1] ] * a1
.
.
y[N] = [ y[N-1] y[N-2] ... y[N-L] ] * aL
然后我们可以使用它来完成我们的脚本:

function a = find_coeficient(y,N,L)
  d = y((L+1):N);
  D=[];
  for ii=L:(N-1)
    % index into the y vector for each row of D
    D = vertcat(D, y(ii:-1:(ii-L+1))');
  end
  a = D\d;
end

我的意思是,如果我从键盘输入L,什么应该是重塑形式?但我如何才能访问N+1处的y元素?请查看我发布的这个链接,并根据我发布的论文检查它是否正确,但我如何创建向量d?