Skip to content

Octave/Matlab – Impossible de tracer des données

Solution:

Vous essayez le devoir de la troisième semaine du cours d’apprentissage automatique d’Andrew Ng sur Coursera. Là, dans le fichier ex2.m, il y a un appel à la fonction plotData(X,y) qui fait référence à la fonction écrite dans le fichier plotData.m. Vous pensez peut-être que plotData est une fonction par défaut dans octave, mais vous devez en fait implémenter cette fonction dans le fichier plotData.m. Voici mon code dans le fichier 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

Si vous lisez attentivement le pdf, les codes PlotData.m sont dans le pdf. Voici le code :

% 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);

1) X est un tableau 5×2 tandis que y est un tableau 5×1

2) plotData n’est pas une commande Matlab, utilisez plutôt plot

Essayez le code suivant :

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;



Articles Similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.