matlab知识整理(二)

来源:互联网 发布:淘宝坊外贸原单女装店 编辑:程序博客网 时间:2024/05/07 19:23

3、循环结构

For循环

在for和end语句之间的{commands}按数组中的每一列执行一次。在每一次迭代中,x被指定为数组的下一列,即在第n次循环中,x=array(:, n)。

>> x = zeros(2,6); % x是一个16的零矩阵
>> for i = 1:6,
x(i)=i;
end
>> x
x =
     1     3     5     0     0     0
     2     4     6     0     0     0
>> for n=1:10,
x(n)=sin(n*pi/10);
end

当有一个等效的数组方法来解给定的问题时,应避免用For循环。例如,上面的例子可被重写为

>>n=1:10;
>>x=sin(n*pi/10)

第二种方式执行速度更快。

为了得到最大的速度,在For循环(While循环)被执行之前,应预先分配数组。

While循环
>> x = zeros(2,6); % x是一个16的零矩阵
>> i = 1;
>> while i <= 12,
x(i) = i;
i = i+1;
end
>> x
x =
     1     3     5     7     9    11
     2     4     6     8    10    12

4、控制结构

if-else判断

a = input('请输入系数a:');
b = input('请输入系数b:');
c = input('请输入系数c:');
delt = b^2-4*a*c;
if (delt>0)
    fprintf('该方程有两个不同实根:\n');
    x1=(-b+sqrt(delt))/(2*a);
    x2=(-b-sqrt(delt))/(2*a);
    fprintf('x1=%f \t x2=%f\n',x1,x2);
elseif(delt==0)
    fprintf('该方程有两个相同实根:\n');
    x1=-b/(2*a);
    fprintf('x1=x2=%f\n',x1);
else
    fprintf('该方程有两个不同复数根:\n');
    realpart=-b/(2*a);
    imagepart=sqrt(abs(delt))/(2*a);
    fprintf('x1=%f+%fi \t x2=%f-%fi\n',realpart,imagepart,realpart,imagepart);
end


0 0
原创粉丝点击