Ошибка «Индекс превышает размеры матрицы» - PullRequest
1 голос
/ 06 мая 2010

Я пытаюсь прочитать файл Excel 2003, который состоит из 62 столбцов и 2000 строк, а затем нарисовать 2D-дендрограмму из шаблона 2000 из 2 категорий данных, как мой график в Matlab. Когда я запускаю скрипт, он выдает мне вышеуказанную ошибку. Я не знаю почему. У кого-нибудь есть идеи, почему у меня есть вышеуказанная ошибка?

Мои данные здесь: http://rapidshare.com/files/383549074/data.xls

Пожалуйста, удалите столбец 2001, если вы хотите использовать данные для тестирования.

и мой код здесь:

% Script file: cluster_2d_data.m

d=2000;  n1=22;  n2=40;  N=62

Data=xlsread('data.xls','A1:BJ2000');

X=Data';

R=1:2000;

C=1:2;

clustergram(X,'Pdist','euclidean','Linkage','complete','Dimension',2,...

'ROWLABELS',R,'COLUMNLABELS',C,'Dendrogram',{'color',5})

1 Ответ

1 голос
/ 06 мая 2010

После оператора xlsread вы должны получить матрицу 2000x62 double Data. Затем вы транспонируете его и присваиваете X, поэтому X - это 62x2000 матрица. В clustergram векторы для свойств RowLabels и ColumnLabels должны соответствовать размеру вашего Data, но вы передаёте вектор длиной 2000 как RowLabels и вектор 2 как ColumnLabels. Это может привести к ошибке.

Какую версию MATLAB вы используете? Это выглядит довольно старым, так как у вас есть clustergram как функция, но в более поздних версиях Bioinformatic Toolbox она была переработана как объект. В R2010a ваш код будет генерировать

"ROWLABELS размер не соответствует данным"

но я не уверен, что было бы в старой версии.

Попробуйте удалить RowLabels и ColumnLabels, а также другие свойства. Вы все еще получаете ошибку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...