0

好吧,我是 matlab 编程的新手,我一直在与索引问题作斗争。我目前正在研究图像处理,这让我发疯。无论如何,让我们跳到问题。我有以下代码

perm=randperm(size(X,2));
CX=X(:,perm(1:nclus));

我尝试运行代码,但它触发了一个错误,提示“索引超出了矩阵维度。据我所知,我认为这是因为(:,perm(1:nclus))高于矩阵维度。我想知道如何解决这个问题。

请注意,X:是列 nclus:簇数中的输入点。

如果你们向我澄清错误原因和可能的解决方案,我非常感谢。

谢谢

萨米人

4

1 回答 1

1

猜测您只想nclus从 2 维矩阵中获取随机列X,试试这个:

perm=randperm(size(X,2));
CX=X(:,perm<=nclus);

您遇到的错误不应该来自X被调用的维度太多,可能是因为超出了 perm 的维度。尝试逐行运行:

perm = randperm(size(X,2)); %Should be ok
idx = perm(1:nclus); %Probably fails
X(:,idx)
于 2013-02-04T15:38:07.453 回答