#matlab #matlab-figure
#matlab #matlab-рисунок
Вопрос:
У меня есть одна матрица, называемая targets (1X4000); столбец с 1 по 2000 содержит двойное значение 0, а столбец с 2001 по 4000 содержит двойное значение 1
а) я хочу создать матрицу с именем targets_1, где я хочу проверить, равно ли значение 0, затем внести запись 1, чтобы в конце дня у меня была матрица с: столбцом от 1 до 2000 со значением 1 и столбцом 2001: 4000 с нулевым значением
б) Та же ситуация, что и выше, но на этот раз я хочу проверить, равно ли значение 1, затем внести запись 1, и если оно равно нулю, то сделать запись нулевой; в конце; моя новая матрица targets_2 содержит значения: столбец с 1 по 2000 с нулевым значением и столбец 2001: 4000 со значением 1
я знаю, как использовать функцию strcmp для выполнения такой проверки со строками, но проблема в том, что моя исходная матрица двойная, и я не знаю, существует ли такая функция, как
setosaCmp = strcmp(‘setosa’,species);
которая могла бы работать с double (числами); любая помощь была бы оценена
Комментарии:
1. Эквивалентом
strcmp
для числовых значений являетсяeq
, или просто==
оператор сравнения. (Если ваши числовые значения находятся в массиве ячеек,cell2mat
может помочь или немного запутанный подход с использованием анонимной функции иcellfun
.)
Ответ №1:
Ваш вопрос не очень ясен. Похоже, что следующее удовлетворит вашему описанию:
targets_1 = 1 - targets;
targets_2 = targets;
Ответ №2:
targets1 = double(targets == 0);
targets2 = targets;
Ответ №3:
Я основываю этот ответ исключительно на том факте, который вы упомянули setosaCmp = strcmp('setosa', species);
. Исходя из этого, я предполагаю, что
- У вас есть Statistics Toolbox, поскольку
setosa
это разновидность радужки из набора данных Fisher Iris, широко используемая в демонстрационных версиях Statistics Toolbox, и - У вас есть переменная, содержащая метки классов, и вы хотели бы создать некоторые переменные-индикаторы класса (т. Е. Новую переменную для каждой метки класса, каждая из которых равна 1, когда элемент находится в этом классе, и 0, когда это не так).
Это верно? Если нет, пожалуйста, игнорируйте меня.
Если я прав, то я думаю, что команда, которую вы ищете, dummyvar
из Statistics Toolbox. Попробуйте это:
>> classLabels = [1, 2, 1, 2, 3, 1, 3];
>> dummyvar(classLabels)
ans =
1 0 0
0 1 0
1 0 0
0 1 0
0 0 1
1 0 0
0 0 1