matlab知識整理(二)
阿新 • • 發佈:2019-02-20
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