Matlab 函数滞后于表变量

Matlab 函数滞后于表变量,matlab,data-processing,Matlab,Data Processing,是一种简单的方法,可以将表中的所有变量滞后一定数量的滞后,用NaN替换值 表格变量不支持长度函数,这会导致matlab内置的lagmatrix函数失败 环境是R2015a 对于给定的数组 a= magic(5); a = 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 l

是一种简单的方法,可以将表中的所有变量滞后一定数量的滞后,用NaN替换值

表格变量不支持长度函数,这会导致matlab内置的lagmatrix函数失败

环境是R2015a

对于给定的数组

a= magic(5);

a =

17    24     1     8    15
23     5     7    14    16
 4     6    13    20    22
10    12    19    21     3
11    18    25     2     9

lagmatrix(a,3)
ans =
NaN   NaN   NaN   NaN   NaN
NaN   NaN   NaN   NaN   NaN
NaN   NaN   NaN   NaN   NaN
 17    24     1     8    15
 23     5     7    14    16
尝试在表上运行相同的命令会产生以下错误

a=array2table(magic(5))
a = 

Var1    Var2    Var3    Var4    Var5
____    ____    ____    ____    ____

17      24       1       8      15  
23       5       7      14      16  
 4       6      13      20      22  
10      12      19      21       3  
11      18      25       2       9  

lagmatrix(a,3)
Error using table/length (line 395)
Undefined function 'length' for input arguments of type 'table'.  Use the     HEIGHT,
WIDTH, or SIZE functions instead.

Error in lagmatrix (line 52)
if numel(Y) == length(Y)
是否有一个简单的命令可以对Matlab中的表变量执行上述行为?

您可以尝试:

function [ lagA] = lagmatrix(A,n)
% A matrix to lag
% n number of lags
% lagA output matrix
lagA = NaN(size(A))
lagA(n+1:end,:) = A(1:end-n,:)
lagA = array2table(lagA) 
end
编辑:忘了将矩阵转换为数组。

为什么不这样做

a = array2table(magic(5));     %// example table
n = 3;                         %// lag
a(n+1:end,:) = a(1:end-n,:);
a{1:n,:} = NaN;

发布一个包含输入和输出的小示例