删除hansl中的列

时间:2016-05-15 19:44:13

标签: matlab matrix gretl

我有一个非常简单的问题。我想从循环中的矩阵中删除一列。

在Matlab中我使用以下内容:

对于某个我,

X(:,1)= []

删除列并重新整形矩阵。

我想知道Hansl(Gretl)计划中的等价物。

谢谢!

1 个答案:

答案 0 :(得分:1)

对不起,现在对你来说可能已经太晚了,但我刚看到你的问题,也许对其他人有用。 在hansl(gretl' s脚本和矩阵语言)中,我可以想到几种可能性:

首先,如果您碰巧知道列数和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的比较(。!=)。但它可能不像以前那样可读。

祝你好运!