Я хочу преобразовать целое число i
в логический вектор с i-м ненулевым элементом. Это может де сделано с 1:10 == 2
, который возвращаетПреобразование целого числа в логический массив в MATLAB
0 1 0 0 0 0 0 0 0 0
Теперь я хочу, чтобы этот процесс векторизации для каждой строки. Написание repmat(1:10, 2, 1) == [2 5]'
Я ожидаю получить
0 1 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0
Но вместо этого, возникает эта ошибка:
Ошибка использования ==
размеры матрицы должны быть согласованы.
Могу ли я оцифровать этот процесс, или это только цикл for
?
@ johnny5 Это не так, но это очень плохо, сформированы и неясны. Ответ на стакан ниже поясняет, чего хочет OP, и это даже по теме. –
В целом, будьте осторожны, ожидая, что 1s и 0s будут считаться логическими. Рассмотрим: '>> foo = 1:10; >> foo ([1,0,1,0,1,0,1,0,1,0]) Индексы индексов должны быть либо натуральными целыми положительными, либо логическими. >> foo (логический ([1,0,1,0,1,0,1,0,1,0])) ans = 1 3 5 7 9' –