0

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

在 Matlab 中,我使用以下内容:

对于某个我,

X(:,i)=[]

删除列并重塑矩阵。

我想知道 Hansl (Gretl) 程序中的等价物,拜托。

谢谢!

4

1 回答 1

2

抱歉,现在对您来说可能为时已晚,但我刚刚看到您的问题,也许它对其他人有用。在 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) ) 

selfc() 函数丢弃第二个向量参数具有 0 条目的列。这也适用于 i==1 或 i==cols(X)。此最终解决方案的较短变体可能是:

X = selifc(X, seq(1, cols(X)) .!= i)

它对使用 seq() 函数构造的列索引进行逐元素不等于 i 比较 (.!=)。但它可能不像以前的方式那样可读。

祝你好运!

于 2016-11-01T11:38:57.633 回答