matlab中怎样实现曲线的左右平移?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab中怎样实现曲线的左右平移?相关的知识,希望对你有一定的参考价值。

实验得到的数据是1900点,用plot画图时横坐标范围是0~1900。我希望把曲线整体向右平移100点,横轴坐标范围是0~2000,在100~2000范围内有曲线。希望有经验者指点,拜托拜托~~
数据是实验得到的,所以不方便用 t 加减一个数来平移。另外我试过了xlim,axis这两个函数,都不能得到我想要的结果……

在100-2000的范围就是对应平移之后的t。平移曲线在数学上的定义就是移横轴。

t=0:0.0001:0.1;

y=sin(2*pi*30*t);

figure;

plot(t,y);

hold on;

plot(t-0.05,y,'r');

legend('平移前','平移后');

%such as:

%画出y=x^2的图像

x=-1:0.01:1;

y=x.^2;

plot(x,y);

hold on;

%向上平移一个单位;

y1=x.^2+ones(size(x));

plot(x,y1);

grid on;

函数图形中平移作用

一、通过简单的平移可以构造精美的图形。也就是花边,通常用于装饰,过程就是复制-平移-粘贴。

二、平移常与平行线有关,平移可以将一个角,一条线段,一个图形平移到另一个位置,是分散的条件集中到一个图形上,使问题得到解决。

三、把一个图形整体沿某一直线方向移动,会得到一个新的图形,新图形与原图形的形状和大小完全相同。

四、新图形中的每一点,都是由原图形中的某一点移动后得到的,这两个点是对应点。连接各组对应点的线段平行且相等(或在同一直线上)。

参考技术A

在100-2000的范围就是对应平移之后的t。平移曲线在数学上的定义就是移横轴。

t=0:0.0001:0.1;

y=sin(2*pi*30*t);

figure;

plot(t,y);

hold on;

plot(t-0.05,y,'r');

legend('平移前','平移后');

%such as:

%画出y=x^2的图像

x=-1:0.01:1;

y=x.^2;

plot(x,y);

hold on;

%向上平移一个单位;

y1=x.^2+ones(size(x));

plot(x,y1);

grid on;

扩展资料:

函数图象平移的本质是函数图象位置的移动,函数图象本身没有发生变化,只是平移后的函数图象在二维坐标系中对应的坐标发生了变化。函数图象在平移的过程中,其平移具有针对性。

函数图象平移不外乎两种情况,即左、右平移和上、下平移。函数图象的左、右平移是针对横坐标 x 而言,函数图象的上、下平移是针对纵坐标 y 而言。当函数图象向左、右平移时,纵坐标保持不变,横坐标遵循左加右减的规则;当函数图象向上、下平移时,横坐标保持不变,纵坐标遵循上减下加的规则。

参考资料来源:百度百科-函数平移

参考技术B 在100-2000的范围就是对应平移之后的t吧。不太明白你想要什么啊。平移曲线在数学上的定义就是移横轴。不然就是取景范围,用axis,但你说又不能得到想要结果。实在不知道你想要的结果是什么呢。追问

直接写plot(y),曲线第一个点的横坐标是0,最后一个点的横坐标是1900。
我想要的结果就是:曲线的第一个点的横坐标是100,最后一个点的横坐标是2000。
如果用axis([100 2000 -5 5]); 这样的话是只显示曲线的第100~1900个点,只是截取一部分显示,而且最后一个点的横坐标还是1900。

追答

plot(100:2000,y)

本回答被提问者和网友采纳
参考技术C 例子:
t=0:0.0001:0.1;
y=sin(2*pi*30*t);
figure;
plot(t,y);
hold on;
plot(t-0.05,y,'r');
legend('平移前','平移');
%subs用于符号函数平移例
syms t;
y=sin(2*pi*30*t);
y1=subs(y,t,t+0.05);
figure;
subplot(211);
ezplot(y,[0,0.1]);
grid;
subplot(212);
ezplot(y1,[0,0.1]);
grid;

MATLAB实现图像平移

I=rgb2gray(imread(jpeg.jpg));     %读入图片并转化为灰度图
figure,imshow(I);                   %建立窗口,显示灰度图I
[r,c]=size(I);                      %计算灰度图的大小,r表示行,c表示列,即通过size函数将灰度图I的行数存在矩阵的r中,列数存在矩阵的c中,这样就知道灰度图的大小是r×c
dst=zeros(r,c);                     %建立r×c的0矩阵(平移结果矩阵),初始化为零(黑色)
dx=50;                              %平移的x方向的距离,这里是竖直方向
dy=80;                              %平移的y方向的距离,这里是水平方向
tras=[1 0 dx;0 1 dy;0 0 1];         %平移变换矩阵
for i=1:r
    for j=1:c
        temp=[i;j;1];               %灰度图I要平移变换的点,这里用矩阵表示
        temp=tras*temp;             %矩阵相乘,得到三行一列的矩阵temp,即平移后的矩阵
        x=temp(1,1);                %把矩阵temp的第一行第一列的元素给x   
        y=temp(2,1);                %把矩阵temp的第二行第一列的元素给y 
        if(x>=1&&x<=r)&&(y>=1&&y<=c)%判断所变换后得到的点是否越界
            dst(x,y)=I(i,j);        %得到平移结果矩阵,点(x,y)是由点(i,j)平移而来的,有对应关系 
        end
    end
end
figure,imshow(uint8(dst));

 

以上是关于matlab中怎样实现曲线的左右平移?的主要内容,如果未能解决你的问题,请参考以下文章

如何用matlab实现对边缘检测后的图像的边缘细化和曲线拟合?

我用matlab空间旋转曲面平移

MATLAB实现图像平移

如何在matlab中进行数据的平移和旋转

matlab如何实现两条曲线之间填充颜色?

图像融合基于平移不变小波变换实现CT图像融合matlab源码