Matlab 函数滞后于表变量
是一种简单的方法,可以将表中的所有变量滞后一定数量的滞后,用NaN替换值 表格变量不支持长度函数,这会导致matlab内置的lagmatrix函数失败 环境是R2015a 对于给定的数组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
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;
发布一个包含输入和输出的小示例