matlab中的repmat函数
Repmat function in matlab
我已经解决了一堆关于 MatLab 中 Repeat 函数的问题,但我无法弄清楚这个过程是如何工作的。
我正在尝试将其翻译成 R,但我的问题是我不知道该函数如何操作数据。
该代码是制定配对交易策略的过程的一部分,其中代码采用 FALSE/TRUE 表达式的向量。
密码是:
% initialize positions array
positions=NaN(length(tday), 2);
% long entries
positions(shorts, :)=repmat([-1 1], [length(find(shorts)) 1]);
其中 shorts 是 TRUE/FALSE 表达式的向量。
希望能帮到你。
MATLAB repmat
函数复制并平铺数组。语法是
B = repmat(A,n)
其中 A
是输入数组,n
指定如何平铺数组。如果 n
是一个向量 [n1,n2]
- 就像你的情况 - 那么 A
在行中被复制 n1
次,在列中被复制 n2
次。例如
A = [ 1 2 ; 3 4]
B = repmat(A,[2,3])
B = | |
1 2 1 2 1 2
3 4 3 4 3 4 __
1 2 1 2 1 2
3 4 3 4 3 4
(这些线条只是为了说明 A
是如何平铺的)
在您的例子中,repmat
为 shorts
的每个非零元素复制向量 [-1, 1]
。因此,您将 positions
的每一行(其在 shorts
中的对应条目不为零)设置为 [-1,1]
。所有其他行将保持 NaN
。
例如如果
shorts = [1; 0; 1; 1; 0];
然后您的代码将创建
positions =
-1 1
NaN NaN
-1 1
-1 1
NaN NaN
我希望这可以帮助您阐明 repmat
的效果。如果没有,请随时询问。
repmat
重复你给他的矩阵[dim1 dim2 dim3,...]
次。您的代码所做的是:
1.-length(find(shorts))
:获取shorts
中"trues"的数量。
例如:
shorts=[1 0 0 0 1 0]
length(find(shorts))
ans = 2
2.-repmat([-1 1], [length(find(shorts)) 1]);
重复 [-1 1]
[length(find(shorts)) 1]
次。
继续例如:
repmat([-1 1], [length(find(shorts)) 1]);
ans=[-1 1
-1 1];
3.- positions(shorts, :)=
将给定的矩阵保存在给定的索引中。 (注意!:仅当 shorts
的类型为 logical
时有效)。
继续例如:
此时,如果您没有遗漏任何内容,positions 应该是一个 6x2
NaN
矩阵。索引将用 [-1 1]
矩阵填充 shorts
的 true
位置。所以在此之后,职位将是:
positions=[-1 1
NaN NaN
NaN NaN
NaN NaN
-1 1
NaN NaN]
希望对您有所帮助
我已经解决了一堆关于 MatLab 中 Repeat 函数的问题,但我无法弄清楚这个过程是如何工作的。
我正在尝试将其翻译成 R,但我的问题是我不知道该函数如何操作数据。
该代码是制定配对交易策略的过程的一部分,其中代码采用 FALSE/TRUE 表达式的向量。
密码是:
% initialize positions array
positions=NaN(length(tday), 2);
% long entries
positions(shorts, :)=repmat([-1 1], [length(find(shorts)) 1]);
其中 shorts 是 TRUE/FALSE 表达式的向量。
希望能帮到你。
MATLAB repmat
函数复制并平铺数组。语法是
B = repmat(A,n)
其中 A
是输入数组,n
指定如何平铺数组。如果 n
是一个向量 [n1,n2]
- 就像你的情况 - 那么 A
在行中被复制 n1
次,在列中被复制 n2
次。例如
A = [ 1 2 ; 3 4]
B = repmat(A,[2,3])
B = | |
1 2 1 2 1 2
3 4 3 4 3 4 __
1 2 1 2 1 2
3 4 3 4 3 4
(这些线条只是为了说明 A
是如何平铺的)
在您的例子中,repmat
为 shorts
的每个非零元素复制向量 [-1, 1]
。因此,您将 positions
的每一行(其在 shorts
中的对应条目不为零)设置为 [-1,1]
。所有其他行将保持 NaN
。
例如如果
shorts = [1; 0; 1; 1; 0];
然后您的代码将创建
positions =
-1 1
NaN NaN
-1 1
-1 1
NaN NaN
我希望这可以帮助您阐明 repmat
的效果。如果没有,请随时询问。
repmat
重复你给他的矩阵[dim1 dim2 dim3,...]
次。您的代码所做的是:
1.-length(find(shorts))
:获取shorts
中"trues"的数量。
例如:
shorts=[1 0 0 0 1 0]
length(find(shorts))
ans = 2
2.-repmat([-1 1], [length(find(shorts)) 1]);
重复 [-1 1]
[length(find(shorts)) 1]
次。
继续例如:
repmat([-1 1], [length(find(shorts)) 1]);
ans=[-1 1
-1 1];
3.- positions(shorts, :)=
将给定的矩阵保存在给定的索引中。 (注意!:仅当 shorts
的类型为 logical
时有效)。
继续例如:
此时,如果您没有遗漏任何内容,positions 应该是一个 6x2
NaN
矩阵。索引将用 [-1 1]
矩阵填充 shorts
的 true
位置。所以在此之后,职位将是:
positions=[-1 1
NaN NaN
NaN NaN
NaN NaN
-1 1
NaN NaN]
希望对您有所帮助