Попросите построить прямоугольный импульс с контролируемым нарастанием / спадом
Я хотел бы построить серию прямоугольных импульсов для ввода векторных данных. Профиль графика создаст нарастающий фронт импульса для положительного числа и создаст спадающий фронт для отрицательного числа. Сюжет должен выделяться цветом для каждого представленного номера.
Например, если векторный вход X равен [1 -1 2 -2 3 4 1 -4 -1 -3] Амплитуда данных "1" равна 5, Амплитуда данных "2" равна 4, Амплитуда данных "3" равна 3 и амплитуда данных '4' равна 2
Итак, вход X получил индекс от t(1) до t(10). Вывод графика или диаграммы должен выглядеть как вставленное изображение
Как бы я мог написать код MATLAB для этой работы?
Спасибо. B.Bundit
1 ответ
Сюжет очень маленький, но я думаю, что вы хотите что-то вроде bar
в матлаб. Документация здесь. Если у вас есть вектор, который вы измените, то вы можете создать вектор значений для построения графика, используя cumsum
,
X=[1 -1 2 -2 3 4 1 -4 -1 -3];
Xplot=cumsum([5,X(2:end)]); % //so 5 will be your initial value
Поскольку приведенный выше график имеет разную ширину столбцов, вам также понадобится вектор центра каждой точки данных и ширина каждой точки данных.
means= [1 2 3 4 5 6 7 8 9 10];
widths=[1 1 1 1 1 1 1 2 1 1];
Для разных цветовых графиков вы можете сделать:
colors=['r','g','k','b','c','m','y','r','g','k'];
for i=1:length(X)
h=bar(means(i),Xplot(i),widths(i));
if i==1, hold on; end
set(h,'FaceColor',colors(i));
end
% //This will label each bar, or you could define your axes before the loop
set(gca,'XTickLabel',means);
Вы можете изучить другие свойства, чтобы установить здесь. Класс Barseries не имеет FaceAlpha
собственности, поэтому я не уверен, что вы можете сделать их прозрачными. Однако вы можете установить FaceColor
никому и иметь EdgeColor
быть выбранным по вашему выбору. Обратите внимание, что цвет ребер задается триплетом RGB, а не буквенным кодом.
Возможно, вам также придется прибегнуть к данным по ширине, чтобы самые широкие столбцы отображались в последнюю очередь и, таким образом, находились сверху. Это будет выглядеть так:
[widths_sorted,sort_idx]=sort(widths,'ascending');
Xplot_sorted=Xplot(sorted_idx);
means_sorted=means(sorted_idx);