%函数移动
close all;
clear all;
dir=input('请输入平移方向,“1”为向左,“2”为向右');
if dir~=1&&dir~=2;%输入控制
error('您的输入有误!');
end;
step=input('请输入平移步数');
Samp=200; %设置信号的采样精度
A=10;%信号幅值
na=1;%噪声放大系数
w=1;
p=0;
t = linspace(0,6*pi/w,Samp); %创建函数向量
f=A*sin(w*t+p)+na*randn(1,Samp);%构造一个标准函数
%函数平移
y=rotate(f,dir,step);
plot(t,f,'b');
hold on;
plot(t,y,'r');
///////rotate.m/////////
function y=rotate(f,dir,step);
%函数平移 f为目标函数 dir为平移方向 向左为1 向右为2 step为平移步数
len=length(f);%取得f长度
%当向左平移时
if dir == 1 ;
for n=0:1:step;
temp=f(len);%将最后一个元素取出保护
for m=1:1:len-1%所有点向后移动一位
f(len-m+1)=f(len-m);
f(1)=temp;%将最后一点放入第一点
end
end
end
%当向右平移时
if dir == 2 ;
for n=0:1:step;
temp=f(1);%将最后一个元素取出保护
for m=2:1:len%所有点向后移动一位
f(m-1)=f(m);
f(len)=temp;%将最后一点放入第一点
end
end
end
y=f;%代回