matlab 循环表达式

问题描述:

matlab 循环表达式
现在想编一小段程序,功能如下:i从1到4循环,对每个d(i)进行多项式赋值,其中a=[1 2 3 4];b=[5 6 7 8];
编程如下:
for i=1:4
d(i)=sqrt((x-a(i))^2+(y-b(i))^2);
end

但总是提示不对,如果不加i就可以了,但是得不到循环的d的多项式向量了,怎么办?
1个回答 分类:综合 2014-09-17

问题解答:

我来补答
matlab虽然不需要定义,但是第一次使用比较重要.
a=[1 2 3 4];b=[5 6 7 8];
d=zeros(1,4);
for i=1:4
d(i)=sqrt((x-a(i))^2+(y-b(i))^2);
end
再问: 不行啊,这样子还是不对啊,这不是定义还会不定义的问题,定义了的好处是减少运行时间。是x,y和double 兼容性问题
再答: “定义了的好处是减少运行时间”<==>扯淡x和y要你自己根据需要赋值的,这也不懂?不要碰到问题就大叫“不行啊!不行啊!”,好像天塌下来的感觉。战斗力低的只能直接看运行结果。%源代码:x=12;y=18;a=[1 2 3 4];b=[5 6 7 8];d=zeros(1,4);for i=1:4         d(i)=sqrt((x-a(i))^2+(y-b(i))^2);endd%----------------------------%运行结果:
再问: 我要的是表达式,不是一个数值结果,我现在就想得到一个d(1)=x^2+y^3;;类似于这样的多项式。。。。 关于定维减少运行时间的问题,好吧,我不是牛人,我不懂,此语出自《基于Matlab/simulink的系统仿真技术与应用》这本书的第85页,书上这么说的,我一个菜鸟就算是不对了,您也没必要这么高姿态和优越感吧
再答: %你要的答案已经了然于纸上,只是你还没看到而已!close all;
x=12;y=18;a=[1 2 3 4];b=[5 6 7 8];d=zeros(1,4);for i=1:4         d(i)=sqrt((x-a(i))^2+(y-b(i))^2);%这个就是表达式endd%为了让你看得清清楚楚、明明白白、真真切切,唯有输出:figurefor i=1:4     %    f(i)=sqrt((x-a(i))^2+(y-b(i))^2)-d(i);%这个就是表达式   f(i)=sym(sprintf('sqrt((x-%.2f)^2+(y-%.2f)^2)-%.2f',a(i),b(i),d(i)));    subplot(2,2,i),text(.5,.5,['$',latex(f(i)),'$','=0'],'interpreter','latex','HorizontalAlignment','center','fontsize',9)    end
  %大多数情况下,困难的不是题目本身,而是提问人能否将问题说清楚。%就上面的答案我都不知道是不是要的答案。 
再问: 我其实就是想得出 d(1)=sqrt((x-a(1))^2+(y-b(1))^2); ...... d(4)=sqrt((x-a(4))^2+(y-b(4))^2); 然后根据加权求和得出sum关于x和y的多项式。程序中f(i)=sym(sprintf('sqrt((x-%.2f)^2+(y-%.2f)^2)',a(i),b(i))); 是我要的。 但为什么我们要再设一个f出来?直接用 d(i)=sym(sprintf('sqrt((x-%.2f)^2+(y-%.2f)^2)',a(i),b(i))); 得不出要的表达式?
 
 
展开全文阅读
剩余:2000