%函数移动
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;%代回
 
Matlab编程实例(3) 函数向左或向右平移N点 左移右移-LMLPHP
05-06 04:07