Generate triangle input with curve edge
    6 views (last 30 days)
  
       Show older comments
    
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.

1 Comment
Accepted Answer
  Image Analyst
      
      
 on 7 Jan 2013
        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);
4 Comments
  Image Analyst
      
      
 on 25 Jul 2015
				Post your 1-D or 2-D data/image in a new question. I can't really visualize what you're asking - it's far, far too general to be answered.
  Rey Kelvin Peralta
 on 26 Jul 2015
				I already did sir thank you here is the link http://www.mathworks.com/matlabcentral/answers/231216-can-anybody-help-me-smoothen-out-the-edges-on-my-3d-plot
More Answers (2)
  Azzi Abdelmalek
      
      
 on 7 Jan 2013
        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)
  bym
      
 on 8 Jan 2013
        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:
clc;clear;close all
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)
0 Comments
See Also
Categories
				Find more on Spectral Estimation in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




