Как именно работает этот пример функции plot () в Octave \ MatLab? - PullRequest
0 голосов
/ 01 мая 2019

Я довольно новичок в Octave \ MatLab , и, следуя руководству, я обнаруживаю некоторые трудности, пытаясь понять, как именно работает эта plot () версия функции.

Итак, у меня следующая ситуация:

У меня есть такой файл данных:

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
45.08327747668339,56.3163717815305,0

Где строка относится к конкретному ученику.

  • Первое значение - это голос студента с оценкой exame-1.
  • Первое значение - это голос студента с оценкой exame-2.
  • третье значение может быть только 0 или 1 (1 означает, что студент был принят в университет, 0 означает, что студент не был принят в университет)

Тогда у меня есть этот код, который загружает и отображает эту информацию в виде графика:

enter image description here

Это код, который загружает предыдущие данные из текстового файла:

%% Initialization
clear ; close all; clc

%% Load Data
%  The first two columns contains the exam scores and the third column
%  contains the label.

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

%% ==================== Part 1: Plotting ====================
%  We start the exercise by first plotting the data to understand the 
%  the problem we are working with.

fprintf(['Plotting data with + indicating (y = 1) examples and o ' ...
         'indicating (y = 0) examples.\n']);

plotData(X, y);

% Put some labels 
hold on;
% Labels and Legend
xlabel('Exam 1 score')
ylabel('Exam 2 score')

% Specified in plot order
legend('Admitted', 'Not admitted')
hold off;

В конце вызывать функцию plotData (X, y); , определенную в другом файле, передавая его X (матрица оценок учеников для экзамена-1 и экзамена-2 ** и y (вектор, который говорит, прошло ли это обучение или нет университетский выбор):

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.
%

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

Для меня совершенно ясно, что он делает, единственное, чего я не понимаю, это последние две строки, на которых приведены примеры:

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. Что точно представляет параметры 'k +' и ko , переданные этой функции plot () ? Я думаю, что k + отображает символ + , а ko отображает символ круга на предыдущем графике. Но я абсолютно не уверен в этом утверждении, потому что здесь я не могу найти информацию об этом: https://octave.org/doc/v4.0.0/Two_002dDimensional-Plots.html

  2. Почему в положительном случае используется параметр LineWidth , а в отрицательном случае я использую MarkerFaceColor ?

  3. Почему в каждом из этих 2 сюжетных линий переносится символ ... ?

    сюжет (X (pos, 1), X (pos, 2), 'k +', 'LineWidth', 2, ... 'MarkerSize', 7);

Что эти ... точно означают? Я попытался поместить все в одну строку следующим образом:

plot(X(pos, 1), X(pos, 2), 'k+','LineWidth', 2, ... 'MarkerSize', 7);

но при этом Октава разбивается, и выполнение останавливается. Зачем? Чего мне не хватает?

1 Ответ

2 голосов
/ 01 мая 2019
  1. 'k +' и 'ko' предлагают построить черный + и черный o.K - цвет, а + и o - типы графиков.См. https://www.mathworks.com/help/matlab/ref/linespec.html для более подробной информации о спецификациях (должно быть то же самое для Octave)

  2. LineWidth перезаписывает ширину линии по умолчанию для символа плюс, в то время как«MarkerFaceColor» перезаписывает цвет заливки по умолчанию для маркеров, которые могут быть заполнены (например, круги, квадраты и т. д.).Поскольку LineWidth не указан для символов круга, он просто использует ширину по умолчанию.Поскольку символы «плюс» не могут быть заполнены, MarkerFaceColor не требуется.

  3. «...» просто означает, что строка перетекает в следующую строку.Он похож на \ или & в некоторых других языках программирования.

...