Matlab图线旋转

如图所示,图线是由一系列数据点连线而成,现在需要将图线开始的直线变成水平的,也就是旋转到开始点与横轴重合。如何操作,谢谢各位了!e=b(:,2);%b为TXT文档。n=b... 如图所示,图线是由一系列数据点连线而成,现在需要将图线开始的直线变成水平的,也就是旋转到开始点与横轴重合。如何操作,谢谢各位了!
e=b(:,2); %b为TXT文档。n=b(:,3);t=b(:,1);z=20/180*pi;x=e*cos(z)+n*sin(z); y=-e*sin(z)+n*cos(z);
plot(x,y,'r')
输出的图线发生了变化。
展开
 我来答
giantbrain
2013-10-10 · TA获得超过347个赞
知道小有建树答主
回答量:358
采纳率:100%
帮助的人:151万
展开全部

clear

clc

data=[0.0027    0.0161    0.0321    0.0509    0.0705    0.0848    0.0975    0.1090    0.1210    0.1311    0.1481...

    0.1525    0.1548    0.1551    0.1587    0.1606    0.1608    0.1657    0.1675    0.1696    0.1716    0.1758...

    0.1772    0.1792    0.1804    0.1831    0.1845    0.1845    0.1850    0.2085    0.2235    0.2403    0.2661...

    0.3001    0.3295    0.3770    0.4232    0.4623    0.5000;...

    

    0.0799    0.5594    1.1187    1.6781    2.5571    3.1164    3.6196    4.2379    4.7738    5.3509    6.4227...

    20.4722   19.2561   21.8737   22.4508    7.5357   18.3492   17.5660   23.4814   16.7009    8.9784   15.4091...

    9.6380   14.5362   10.4624   13.5541   11.5754   25.0066   12.6472   26.4906   27.2738   27.9540   28.9639...

    30.1666   31.1644   32.3101   33.3219   34.1239   34.9201];


[data(2,:),I2]=sort(data(2,:));

data(1,:)=data(1,I2);

plot(data(1,:),data(2,:),'-k')

hold on


%下面才是旋转代码!!!

data=[1/0.5,0;0,1/35]*data;

theta=20/180*pi; %顺时针转20度

data=[cos(theta),sin(theta);-sin(theta),cos(theta)]*data;


%直接旋转

data=[0.5,0;0,35]*data;

plot(data(1,:),data(2,:),'-b')


% 旋转后恢复原有范围

data=[0.5/max(data(1,:)),0;0,35/max(data(2,:))]*data;

plot(data(1,:),data(2,:),'-r')



legend('原有数据','直接旋转','旋转后恢复原有范围')

更多追问追答
追问
data=[cos(theta),sin(theta);-sin(theta),cos(theta)]*data;
这句的意思是不是矩阵相乘。如果data=[x;y],那么上面的意思是:
x.*cos(theta)+y.*sin(theta)
-x.*sin(theta)+y.*cos(theta);
按照上面做后,图形发生了变化,请指教。
追答
先把x,y归一化,再旋转,因为你看到的原图,虽然x和y的范围相差很大,但是两个轴的长度在视觉上是差不多的,真要是按值的范围画坐标轴的话,那原图就基本上是一个竖直的直线了,旋转完当然也几乎是一条直线了。所以要先归一化,旋转之后,你再回复它们的范围。另外,旋转矩阵[cos(theta),sin(theta);-sin(theta),cos(theta)]
是绕原点旋转。要是绕其它点旋转,先减去,旋转完后再加上。
青山_独钓客
2013-10-10 · TA获得超过229个赞
知道答主
回答量:41
采纳率:100%
帮助的人:15万
展开全部
可以考虑使用rotate 函数对图形进行旋转。具体可看帮助文档。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式