How do i generate a triangular waveform
조회 수: 7 (최근 30일)
이전 댓글 표시
I have to generate a triangular signal on 3 periods, 1000 points on period( N=1000 ), with a 5% noise signal on it. Here it is what i did: close all; clear all; clc;
N=1000; fi=1:N; s=zeros(1); t=zeros(1);
for i=1:N s(i)=N/2*sin(6*pi/N*i); %semnal sinusoidal de 3 perioade if s(i)>0 t(i)=i-N/12+rand*N/40; %semnal triunghiular pozitiv + 5% zgomot else t(i)=-i+3*N/12+rand*N/40; %semnal triunghiular negativ end if s(i)>0 t(i)=i-5*N/12+rand*N/40; %semnal triunghiular pozitiv + 5% zgomot else t(i)=-i+7*N/12+rand*N/40; %semnal triunghiular negativ end if s(i)>0 t(i)=i-9*N/12+rand*N/40; %semnal triunghiular pozitiv + 5% zgomot else t(i)=-i+11*N/12+rand*N/40; %semnal triunghiular negativ end end
%i=1:N/6 %dinte fierestrau pana la N/6
%t(i)=i-N/12; %reparam semnalul cu N/12
%i=N/6:N/3 %semnalul negativ
%t(i)=-i+3*N/12;
%i=N/3:N/2
%t(i)=i-5*N/12;
%i=N/2:2*N/3
%t(i)=-i+7*N/12;
%i=2*N/3:5*N/6
%t(i)=i-9*N/12
%i=5*N/6:N
%t(i)=-i+11*N/12;
Vmax=max(t); %valoarea max
Vmin=min(t); %valoarea min
Vmed=sum(t)/N; %val med
%regula: Se calculeaza Vmax si se creeaza un vector care sa ia valori din 2 in 2 n=1:2:N
% t(i)=i-n(1)*Vmax, t(i)=-i+n(2)*Vmax
plot(fi,s,fi,t,'r'); %reprezentarea grafica
title('Semnale');
xlabel('Nr.de puncte');
ylabel('Amplitudinea');
legend('semnal sinusoidal','semnal triunghiular','Location','Best');
The problem with my program is that my triangular wave form is not similiar on all periods.
댓글 수: 0
답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Signal Processing Toolbox에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!