滞后 table 个变量的函数
Function to lag table variables
是一种将 table 中的所有变量滞后一定数量的滞后的简单方法,用 NaN 替换值。
table变量不支持长度函数导致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
在 table 上尝试 运行 相同的命令会产生以下错误
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 中对 table 变量执行上述行为?
你可以试试:
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;
是一种将 table 中的所有变量滞后一定数量的滞后的简单方法,用 NaN 替换值。
table变量不支持长度函数导致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
在 table 上尝试 运行 相同的命令会产生以下错误
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 中对 table 变量执行上述行为?
你可以试试:
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;