Generate triangle input with curve edge

7 ビュー (過去 30 日間)
K
K 2013 年 1 月 7 日
コメント済み: Rey Kelvin Peralta 2015 年 7 月 26 日
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.

採用された回答

Image Analyst
Image Analyst 2013 年 1 月 7 日
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 件のコメント
Image Analyst
Image Analyst 2015 年 7 月 25 日
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
Rey Kelvin Peralta 2015 年 7 月 26 日

サインインしてコメントする。

その他の回答 (2 件)

Azzi Abdelmalek
Azzi Abdelmalek 2013 年 1 月 7 日
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)
  1 件のコメント
K
K 2013 年 1 月 7 日
Thank you for your answer. However, what I am trying to do is a triangle with a curvy edge instead of sharp/pointy edge.

サインインしてコメントする。


bym
bym 2013 年 1 月 8 日
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)

カテゴリ

Help Center および File ExchangeDescriptive Statistics についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by