2015-08-20 3 views
0

Я создал некоторый код Matlab, который может помочь любому, кто помогает, и увидеть проблему.Как правильно получить метки точек данных Matlab?

Когда я запускаю следующий код, для каждой точки данных на моем графике я, кажется, получаю все 15 меток вместо одной конкретной метки.

Как я могу получить метки точек данных Matlab для следующего кода?

На основе предложений, я сделал следующее:

Я заменил эти две строки кода:

этикетки = num2str (test_vector_label, 'F% d');
labels_cell = cellstr (метки);

С помощью этой строки кода, как предложено:

labels_cell = strread (num2str (test_vector_label), '% s');

В настоящее время существует два последующих вопросов:

1) Появится предупреждение, заявляющие, что я должен использовать TextScan вместо strread:

labels_cell = TextScan (num2str (test_vector_label), '% s') ;

Тогда, когда я использую textscan, как в приведенной выше строке кода, я получаю сообщение об ошибке?

"Ошибка с помощью текста Cell массив строк может содержать только строки и числовые матрицы"

«Ошибка в Code_Test (строка 46) текст (x_val, y_val, labels_cell, 'горизонтальные', 'левый' , «вертикальный», «нижний») «

2) Как положить письмо перед цифровыми метками? Например, в исходном коде я положил букву F, затем номер?

%--------------Randomly select training and testing data.----------- 
num_data = 35; 

data_idx = 1:35; 

train_data_idx_tmp = randsample(num_data,20) 

train_dataRand_idx = sort(train_data_idx_tmp) 

% Lia = ismember(A,B) returns an array the same size as A, containing 1 (true) 
% where the elements of A are found in B, and 0 (false) elsewhere. 
test_data_idx_tmp = ismember(data_idx,train_dataRand_idx) 

test_dataRand_idx = data_idx(~test_data_idx_tmp)' 

% Check to see if training and test data index are exclusive. 
check_train_test_idx = ismember(train_dataRand_idx,test_dataRand_idx) 

%-------------------------------------------------------------------------- 
% Testing stage. 
test_vector = test_dataRand_idx; %Select randomly obtained testing data. 

% Training stage. 
train_vector = train_dataRand_idx; %Select randomly obtained training 


x_val = [1:15]; 

y_val = 2*[1:15]; 

plot(x_val,y_val,'or','MarkerFaceColor','r') 
grid on 


%Put specific data point labels on plots. 
test_vector_label = test_vector'; 
labels = num2str(test_vector_label,'F%d'); 
labels_cell = cellstr(labels); 
text(x_val,y_val,labels_cell,'horizontal','left', 'vertical','bottom') 

ответ

0

Ваша переменная labels_cell является 1x1 строка ячейки не массив строк. Заменить

labels = num2str(test_vector_label,'F%d'); 
labels_cell = cellstr(labels); 

с

labels_cell = strread(num2str(test_vector_label),'%s'); 
+0

Hi dpmcmlxxvi, спасибо отвалов. Я заменил код, который вы предложили: label_cell = strread (num2str (test_vector_label), '% s'); Теперь есть две проблемы: (1) Появляется предупреждение о том, что я должен использовать textscan: labels_cell = textscan (num2str (test_vector_label), '% s'); Когда я использовал это, я получаю сообщение об ошибке? (2) Как положить письмо перед метками? Например, в исходном коде я написал букву F? – Raptor

+0

Также, как я могу добавить связанные вопросы к моим оригинальным вопросам? Кажется, нет возможности сделать это, и поэтому я вынужден использовать опцию «добавить комментарий». – Raptor

+0

@Raptor, в большинстве случаев предпочтительно начинать новый вопрос, ЕСЛИ ваши последующие вопросы не имеют прямого отношения к ответу пользователя. В этом случае предпочтительнее использовать раздел комментариев. Как правило, вопрос должен быть изменен только для добавления дополнительных деталей и пояснений. – Juderb

Смежные вопросы