Мне нужна помощь в числовом сравнении в matlab

#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); . Исходя из этого, я предполагаю, что

  1. У вас есть Statistics Toolbox, поскольку setosa это разновидность радужки из набора данных Fisher Iris, широко используемая в демонстрационных версиях Statistics Toolbox, и
  2. У вас есть переменная, содержащая метки классов, и вы хотели бы создать некоторые переменные-индикаторы класса (т. Е. Новую переменную для каждой метки класса, каждая из которых равна 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