删除 hansl 中的列
deleting a column in hansl
我有一个非常简单的问题。我想在循环中从矩阵中删除一列。
在 Matlab 中,我使用以下内容:
对于某个i,
X(:,i)=[]
删除列并重塑矩阵。
我想知道 Hansl (Gretl) 程序中的等效项。
谢谢!
抱歉,现在对您来说可能为时已晚,但我刚刚看到您的问题,也许对其他人有用。
在 hansl(gretl 的脚本和矩阵语言)中,我可以想到几种可能性:
首先,如果您碰巧知道列数和 i 的值,解决方案可以使用硬连线索引向量(此处 i==2 和 cols(X)==5):
X = X[, {1, 3,4,5}]
其次,由于第一个解决方案可能限制太多,您可以连接矩阵的左右部分,如:
X = X[, 1: i-1] ~ X[, i+1 :cols(X)]
但这里的问题是我不能索引第一列或最后一列,否则索引会产生错误。
所以我最后一个普遍适用的建议是:
X = selifc( X, ones(1, i-1) ~ 0 ~ ones(1, cols(X) - i) )
selifc() 函数丢弃第二个向量参数具有 0 条目的列。这也适用于 i==1 或 i==cols(X)。
此最终解决方案的较短变体可能是:
X = selifc(X, seq(1, cols(X)) .!= i)
它对使用 seq() 函数构造的列索引进行逐元素不等于 i 比较 (.!=)。但它可能不如以前的方式可读。
祝你好运!
我有一个非常简单的问题。我想在循环中从矩阵中删除一列。
在 Matlab 中,我使用以下内容:
对于某个i,
X(:,i)=[]
删除列并重塑矩阵。
我想知道 Hansl (Gretl) 程序中的等效项。
谢谢!
抱歉,现在对您来说可能为时已晚,但我刚刚看到您的问题,也许对其他人有用。 在 hansl(gretl 的脚本和矩阵语言)中,我可以想到几种可能性:
首先,如果您碰巧知道列数和 i 的值,解决方案可以使用硬连线索引向量(此处 i==2 和 cols(X)==5):
X = X[, {1, 3,4,5}]
其次,由于第一个解决方案可能限制太多,您可以连接矩阵的左右部分,如:
X = X[, 1: i-1] ~ X[, i+1 :cols(X)]
但这里的问题是我不能索引第一列或最后一列,否则索引会产生错误。
所以我最后一个普遍适用的建议是:
X = selifc( X, ones(1, i-1) ~ 0 ~ ones(1, cols(X) - i) )
selifc() 函数丢弃第二个向量参数具有 0 条目的列。这也适用于 i==1 或 i==cols(X)。 此最终解决方案的较短变体可能是:
X = selifc(X, seq(1, cols(X)) .!= i)
它对使用 seq() 函数构造的列索引进行逐元素不等于 i 比较 (.!=)。但它可能不如以前的方式可读。
祝你好运!