我有一个非常简单的问题。我想从循环中的矩阵中删除一列。
在Matlab中我使用以下内容:
对于某个我,
X(:,1)= []
删除列并重新整形矩阵。
我想知道Hansl(Gretl)计划中的等价物。
谢谢!
答案 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的比较(。!=)。但它可能不像以前那样可读。
祝你好运!