Octave / Matlab-не удается / построить график данных


У меня есть простой файл данных, который выглядит следующим образом:

data.txt
34.62365962451697,78.0246928153624,0
30.28671076822607,43.89499752400101,0
35.84740876993872,72.90219802708364,0
60.18259938620976,86.30855209546826,1
79.0327360507101,75.3443764369103,1

И я пытаюсь построить его данные, используя следующий код:

data = load('data.txt');
X = data(:, [1, 2]); y = data(:, 3);

plotData(X, y);

hold on;

xlabel('Exam 1 score')
ylabel('Exam 2 score')

legend('Admitted', 'Not admitted')
hold off;

pause;

Однако это приводит меня к следующим ошибкам:

warning: legend: plot data is empty; setting key labels has no effect
error: legend: subscript indices must be either positive integers less than 2^31 or logicals

И ничего не строится.

Я не понимаю, в чем дело. Рабочий каталог прекрасно работает в октаве.

Как я могу это исправить?

Большое спасибо

3   6   2015-04-08 00:33:20

3 ответа:

1) X-массив 5x2, а y-массив 5x1

2) plotData не является командой Matlab, используйте plot вместо

Попробуйте использовать следующий код:

data = load('data.txt');
x1 = data(:, 1);
x2 = data(:,2);
y = data(:, 3);

plot(x1, y);
hold on
plot(x2,y);

xlabel('Exam 1 score')
ylabel('Exam 2 score')

legend('Admitted', 'Not admitted')
hold off;
pause;

Если вы внимательно читаете pdf, то PlotData.m коды находятся в pdf. Вот код:

% Find Indices of Positive and Negative Examples
pos = find(y==1); neg = find(y == 0);
% Plot Examples
plot(X(pos, 1), X(pos, 2), 'k+','LineWidth', 2, 'MarkerSize', 7);
plot(X(neg, 1), X(neg, 2), 'ko', 'MarkerFaceColor', 'y','MarkerSize', 7);

Вы пытаетесь выполнить задание на третьей неделе курса машинного обучения Эндрю Нг на coursera. Там, в ex2.M файл, есть вызов функции plotData (X,y), которая ссылается на функцию, записанную в plotData.m-файл. Вы можете подумать, что plotData-это функция по умолчанию в octave, но на самом деле вам нужно реализовать эту функцию в plotData.m-файл. Вот мой код в plotData.m-файл.

function plotData(X, y)
%PLOTDATA Plots the data points X and y into a new figure 
%   PLOTDATA(x,y) plots the data points with + for the positive examples
%   and o for the negative examples. X is assumed to be a Mx2 matrix.

% Create New Figure
figure; hold on;

% ====================== YOUR CODE HERE ======================
% Instructions: Plot the positive and negative examples on a
%               2D plot, using the option 'k+' for the positive
%               examples and 'ko' for the negative examples.
%

pos = find(y==1);
neg = find(y==0);
plot(X(pos, 1), X(pos, 2), 'k+','LineWidth', 2, ...
'MarkerSize', 7);
plot(X(neg, 1), X(neg, 2), 'ko', 'MarkerFaceColor', 'y', ...
'MarkerSize', 7);

% =========================================================================



hold off;

end