关于matlab的循环问题

用下面的程序得到的是一个点 但是我有一组u和v的数据如何代入程序得到一组对应的坐标呢
syms u v
u=64;v0.3273;g=pi/9;m=pi/9;a=100;p=2.125;
x=u*cos(u*cos(g)^2*(a + p*cot(m) - 1.0*u*cos(g)*cos(v)) + cos(g)*(p*v + u*sin(g))*(p*sin(v) - 1.0*u*cos(v)*sin(g)) - 1.0*a*cos(g)*cot(m)*(p*cos(v) + u*sin(g)*sin(v)))*cos(g);
y=u*sin(u*cos(g)^2*(a + p*cot(m) - 1.0*u*cos(g)*cos(v)) + cos(g)*(p*v + u*sin(g))*(p*sin(v) - 1.0*u*cos(v)*sin(g)) - 1.0*a*cos(g)*cot(m)*(p*cos(v) + u*sin(g)*sin(v)))*cos(g);
z=u*sin(g) + p*(u*cos(g)^2*(a + p*cot(m) - 1.0*u*cos(g)*cos(v)) + cos(g)*(p*v + u*sin(g))*(p*sin(v) - 1.0*u*cos(v)*sin(g)) - 1.0*a*cos(g)*cot(m)*(p*cos(v) + u*sin(g)*sin(v)));

X=a-x;
Y=-y.*cos(m)-z.*sin(m); %坐标变换*
Z=-y.*sin(m)-z.*cos(m);

R=sqrt(X^2+Y^2) %截型
Z1=Z
O=[R,Z1]

你可以这样改一下,主要的问题是要正确使用数值运算和点运算符。可以不用循环语句来处理。

u=100*rand(1,10);   %这里为了说明问题,随意取的向量组

v=rand(1,10);  %这里为了说明问题,随意取的向量组

g=pi/9;m=pi/9;a=100;p=2.125;

x=u.*cos(u*cos(g).^2.*(a + p*cot(m) - 1.0*u*cos(g).*cos(v)) + cos(g).*(p*v + u*sin(g)).*(p*sin(v) - 1.0*u.*cos(v)*sin(g)) - 1.0*a*cos(g)*cot(m).*(p*cos(v) + u*sin(g).*sin(v)))*cos(g);

y=u.*sin(u*cos(g).^2.*(a + p*cot(m) - 1.0*u*cos(g).*cos(v)) + cos(g).*(p*v + u*sin(g)).*(p*sin(v) - 1.0*u.*cos(v)*sin(g)) - 1.0*a*cos(g)*cot(m).*(p*cos(v) + u*sin(g).*sin(v)))*cos(g);

z=u*sin(g) + p*(u*cos(g).^2.*(a + p*cot(m) - 1.0*u.*cos(g).*cos(v)) + cos(g).*(p*v + u*sin(g)).*(p*sin(v) - 1.0*u.*cos(v)*sin(g)) - 1.0*a*cos(g)*cot(m).*(p*cos(v) + u*sin(g).*sin(v)));

X=a-x;

Y=-y.*cos(m)-z.*sin(m); %坐标变换*

Z=-y.*sin(m)-z.*cos(m);

R=sqrt(X.^2+Y.^2); %截型

Z1=Z;

O=[R',Z1']

运行效果



追问

 如果是我这样数据怎么改程序啊 

温馨提示:内容为网友见解,仅供参考
无其他回答

matlab中的矩阵赋值循环问题
将多个数组垂直串联时,确保这些数组具有相同的列数是非常关键的。错误提示 "错误使用 vertcat。要串联的数组的维度不一致" 通常意味着你尝试将不同列数的数组垂直堆叠在一起。在 MATLAB 中,`vertcat` 函数用于垂直堆叠数组。为了解决此问题,你需要检查你尝试堆叠的数组是否具有相同的列数。例如,在你...

matlab中如何实现for循环?
1、首先,打开MATLAB R2018a,(可通过Ctrl+N)新建一个脚本,保存为TEST.m。2、然后,在脚本中输入如下代码,如下图所示。3、接着,点击编辑器中的运行命令按钮,程序输出for_count = 20,即这里执行了20次循环。但如果按照C++中的FOR循环功能去理解,这里应该只执行7次循环,且i_record的最终结果...

MATLAB 中循环输出的问题。
1、定义循环次数足够大;2、利用m=input(,'s');进行不断符合读入来控制输出。

MATLAB 循环问题
a=1;m=3;for i=1:m %理解此处的m不是向量,是循环时的某一个固定值 b(i)=a*i 得到的b值保留前一个循环中计算的值。是一个随着i变化的向量,loop1时向量中有1个元素;loop2时有2个元素,分别是loop1中值和loop2中的值。这种情况下,不会覆盖loop1中参数。c=a*i 得到循环某个值...

有关Matlab while循环的相关问题?
在使用Matlab while循环时,Zahl输出为什么是100.1而不是100?1、这是因为Schritt=0.1,而while 条件式为Zahl<100,表面上是小于100,但实际执行1000次,所以其结果为 Zahl=0.1(初值)+(0.1+0.1+。。。1000次累加)=100.1 2、如想得到Zahl=100,则其条件应为 while Zahl<100-0.1 。。

matlab循环语句问题
有几个问题:(1)应该先判断输入的是数字还是字符串 (2)逻辑判断中没有“or”,应该用“||”代替 (3)disp函数不能那样用,得先用sprintf,再用disp。改过之后的程序如下:i = input('Which multiplication table?');if isnumeric(i) if i~=fix(i) disp ('Please enter an integ...

关于matlab 的一个循环内,只能保存最后一部分的问题
问题的关键在于,XNEW必须是其自身的循环。你的程序问题就是,XNEW总是在X的基础上操作,而X是不变的,所以XNEW没有将之前的操作累计下来。运行下面的程序即可。X=[20111106 6 1000520 20111107 154 1000520 20111109 364 1000520 20111110 367 1000520 20111111 366 1000520 20111112 367 1000520 2011111...

怎样在matlab中执行循环迭代
问题描述:如Xn+1=(Xn+2.5)*Xn (n=0,1,2,3,4,5...)Xo=0.3 求X1000是多少?解析:x=0:1000;x(1)=0.3;因为在MATLAB的数组中没有0下标,所以从1开始即X0=X1,所求的X1000=X1001 循环语句中默认步长为1 for n=1:1000 x(n+1)=(x(n)+2.5)*x(n);end x(1001)

matlab中for循环只有一个结果是什么情况,下面是我的程序,可以帮忙看一...
根据你提供的代码,我看到 xx 和 yy 是在循环内部定义的数组,而 XX 和 YY 是在循环结束后定义的数组,且是通过将 xx 和 yy 转置得到的。因此,在你的代码中,只能得到最后一次循环的结果。如果你想要得到所有循环的结果,需要将 XX 和 YY 改为矩阵形式的变量,并在循环中不断将每次的结果添加...

关于matlab中的循环语句while和for的提问:我想写出6*6的Hilber矩阵g,自...
1.显然你的第二个while有问题。当j=7之后,第二个while退出循环,此时i=2开始第二次计算,但是j始终是等于7的,所以从第二次的循环开始,后面的while j<7都不成立。所以你最好在 i=i+1;旁边给一个初始化j=1;即可。2.matlab不是C语言,不能用大括号表明程序段。识别循环开始结束都是通过...

相似回答