#matlab #matlab-figure
#matlab #matlab-рисунок
Вопрос:
У меня есть дискретный сигнал x длины N, отслеживаемый в MATLAB с помощью команды
stem(abs(x)); axis([0 N 6 0 4]);
Полученный рисунок показан ниже:
Мой вопрос Мне нужны только некоторые значения, соответствующие, например, индексу [7 10 11 12 15 18 48 50 52 60] чтобы быть окрашенным в другой цвет, скажем, в красный. Как я могу сделать это в своей фигуре?
Ответ №1:
Использование нескольких графиков по hold on
и индексация матрицы
Вы могли бы, возможно, и альтернативно разместить график поверх графика, используя hold on
. Это требует корректировки, в которой в данном случае вам нужен вектор Sample
и Indices
который указывает номер выборки / индекс точки данных. Вы также можете использовать индексацию матрицы, чтобы получить точки амплитуды / данных, соответствующие ключевой точке, Indicies
.
%Vector relating to the sample/data point number%
Sample = linspace(1,70,70);
%Random test data%
X = randi([0,2],1,70);
stem(Sample,X);
hold on
%Key indices to change colour%
Key_Indices = [7 10 11 12 15 18 48 50 52 60];
%Matrix indexing to get values/amplitudes corresponding to key indices%
X_Prime = X(Key_Indices);
stem(Key_Indices,X_Prime,'r');
axis([0 70 0 3]);
hold off
Запускался с использованием MATLAB R2019b
Ответ №2:
Этот код делает красными только круги, а не основы
график с выделенными красными кругами
%Vector relating to the sample/data point number
Sample = linspace(1,70,70);
%Random test data
X = randi([0,2],1,70);
stem(Sample,X);
%Key indices to change color
Key_Indices = [7 10 11 12 15 18 48 50 52 60];
line(Sample(Key_Indices), X(Key_Indices), 'linestyle', 'none', 'marker', 'o', 'color', 'r')
axis([0 70 0 3])
grid on