Hello, Does anyone have an idea, how can I generate triangle wave input with curve edge. That's mean the edge is not sharp but smooth.
No products are associated with this question.
Here, try this demo that I've posted before. I added the last short section that uses conv() to smooth out the triangle wave just for you.
format longg; format compact; clc; % Clear command window. workspace; % Make sure the workspace panel is showing. fontSize = 15;
% Define some parameters that define the triangle wave. elementsPerHalfPeriod = 30; % Number of elements in each rising or falling section. amplitude = 5; % Peak-to-peak amplitude. verticalOffset = -2; % Also acts as a phase shift. numberOfPeriods = 4; % How many replicates of the triangle you want.
% Construct one cycle, up and down. risingSignal = linspace(0, amplitude, elementsPerHalfPeriod); fallingSignal = linspace(amplitude, 0, elementsPerHalfPeriod); % Combine rising and falling sections into one single triangle. oneCycle = [risingSignal, fallingSignal(2:end-1)] + verticalOffset; x = 0 : length(oneCycle)-1;
% Now plot the triangle. subplot(3, 1, 1); plot(x, oneCycle, 'bo-'); grid on; title('One Cycle of the Triangle', 'FontSize', fontSize); % Enlarge figure to full screen. set(gcf, 'units','normalized','outerposition',[0 0 1 1]); % Give a name to the title bar. set(gcf,'name','Demo by ImageAnalyst','numbertitle','off')
% Now replicate this cycle several (numberOfPeriods) times. triangleWaveform = repmat(oneCycle, [1 numberOfPeriods]); x = 0 : length(triangleWaveform)-1;
% Now plot the triangle wave. subplot(3, 1, 2); plot(x, triangleWaveform, 'bo-'); grid on; title('Several Cycles of the Triangle', 'FontSize', fontSize);
% Now blur it to smooth it out: windowWidth = 9; smoothTriangleWave = conv(triangleWaveform, ones(1,windowWidth)/windowWidth, 'same'); subplot(3, 1, 3); plot(x, smoothTriangleWave, 'bo-'); grid on; title('Smoothed Triangle Wave', 'FontSize', fontSize);
fs=1000; ts=1/fs te=ts/30; t=-ts/2:te:ts/2 y=(ts/2-abs(t))*fs*4-1 close,plot(t,y)
you can use the answer to this question http://www.mathworks.com/matlabcentral/answers/57604-help-with-plotting-triangular-wave and just use fewer terms for example:
t = linspace(0,pi); x = zeros(3,100); c = 0;
terms = [1,3,5]; for m = terms c = c+1;
n = (1:2:2*m-1); for k=n x(c,:) = x(c,:)+cos(k.*pi.*t)./k.^2; end end plot(t,x)
Play games and win prizes!Learn more