写if语句的时候,if、else等是可以重叠的。也可以在大的if语句里套一个小的if语句。
实际上for循环也是可以嵌套的
例1:写一个脚本输出三行,每行有5个*
for i=1:5
fprintf('*')
end
fprintf('\n') %第一行的5个*输出后进行换行
for i=1:5
fprintf('*')
end
fprintf('\n') %第二行的5个*输出后进行换行
for i=1:5
fprintf('*')
end
我们换个思路:首先写出一段循环输出5个*,然后让它循环3次不就行了吗?
for j=1:3
for i=1:5
fprintf('*')
end
fprintf('\n')
end
那么想要控制为a行b列呢?如5行10列:
rows = 5
columns = 10
for j=1:rows
for i=1:columns
fprintf('*')
end
fprintf('\n')
end
例2:编写第一行有一个*,每行多一个,一共有10行的脚本
i = 0
for j=(1:10) %外循环,让内循环每次加1,循环10次
for i=1:(i+1) %内循环,i=1:1时输出1个*,i=1:2时输出2个*,以此类推循环着输出*
fprintf('*')
end
fprintf('\n')
end
与上面的代码的逻辑类似:
row = 10 %行数可以随意改变
for j=1:row %外循环,j从1依次分别取到10
for i=1:j %内循环,i=1:1时输出1个*,i=1:2时输出2个*,以此类推循环着输出*
fprintf('*')
end
fprintf('\n') %每输出一次*之后就换行
end
例3:写一个m×n的乘法矩阵,其中的元素就等于它的行数乘以列数
% matrix = rows * columns
% matrix(i,j) = i * j
%如:rows = 4; columns = 5;
% 1×1 1×2 1×3 1×4 1×5
% 2×1 2×2 2×3 2×4 2×5
% 3×1 3×2 3×3 3×4 3×5
% 4×1 4×2 4×3 4×4 4×5
rows = 4;
columns = 5;
matrix=NaN(rows,columns)
for j=1:rows
for i=1:columns
matrix(j,i) = j*i
end
end
例4:写一个乘法口诀表
rows = 9;
for j=1:rows
for i=1:j
fprintf('%f1 * %f2 = %f3|',j,i,j*i)
end
fprintf('\n')
end
以下为Matlab中的输出结果,至于怎样让其省略掉小数点后面的,尝试了很多方法但都没有效果,如有解决了的,烦请在评论区赐教。
1.0000001 * 1.0000002 = 1.0000003|
2.0000001 * 1.0000002 = 2.0000003|2.0000001 * 2.0000002 = 4.0000003|
3.0000001 * 1.0000002 = 3.0000003|3.0000001 * 2.0000002 = 6.0000003|3.0000001 * 3.0000002 = 9.0000003|
4.0000001 * 1.0000002 = 4.0000003|4.0000001 * 2.0000002 = 8.0000003|4.0000001 * 3.0000002 = 12.0000003|4.0000001 * 4.0000002 = 16.0000003|
5.0000001 * 1.0000002 = 5.0000003|5.0000001 * 2.0000002 = 10.0000003|5.0000001 * 3.0000002 = 15.0000003|5.0000001 * 4.0000002 = 20.0000003|5.0000001 * 5.0000002 = 25.0000003|
6.0000001 * 1.0000002 = 6.0000003|6.0000001 * 2.0000002 = 12.0000003|6.0000001 * 3.0000002 = 18.0000003|6.0000001 * 4.0000002 = 24.0000003|6.0000001 * 5.0000002 = 30.0000003|6.0000001 * 6.0000002 = 36.0000003|
7.0000001 * 1.0000002 = 7.0000003|7.0000001 * 2.0000002 = 14.0000003|7.0000001 * 3.0000002 = 21.0000003|7.0000001 * 4.0000002 = 28.0000003|7.0000001 * 5.0000002 = 35.0000003|7.0000001 * 6.0000002 = 42.0000003|7.0000001 * 7.0000002 = 49.0000003|
8.0000001 * 1.0000002 = 8.0000003|8.0000001 * 2.0000002 = 16.0000003|8.0000001 * 3.0000002 = 24.0000003|8.0000001 * 4.0000002 = 32.0000003|8.0000001 * 5.0000002 = 40.0000003|8.0000001 * 6.0000002 = 48.0000003|8.0000001 * 7.0000002 = 56.0000003|8.0000001 * 8.0000002 = 64.0000003|
9.0000001 * 1.0000002 = 9.0000003|9.0000001 * 2.0000002 = 18.0000003|9.0000001 * 3.0000002 = 27.0000003|9.0000001 * 4.0000002 = 36.0000003|9.0000001 * 5.0000002 = 45.0000003|9.0000001 * 6.0000002 = 54.0000003|9.0000001 * 7.0000002 = 63.0000003|9.0000001 * 8.0000002 = 72.0000003|9.0000001 * 9.0000002 = 81.0000003|
例5:输出一个矩阵每一列的和
matrix=[1 4 6;1:3]
[r,c]=size(matrix) %输出该矩阵的行和列
for i=1:c
fprintf('第%f列的和为:%f\n',i,sum(matrix(:,i))) % %f输出的是i,%f\n输出的是矩阵的每一列的和
end
%可以通过修改输出矩阵每一列的和、每一行的和、某一列或某一行的和等等
除此之外关于矩阵的改变和调用还有如下语句:
a(3,:)=[ ] %将矩阵a的第三行删掉
a(:,3)=[ ] %将矩阵a的第三列删掉
a(3,:) %读取矩阵a的第三行
a(:,3) %读取矩阵a的第三列
A(:,2)=[m,n,...] %将矩阵A的第二列重新赋值为m,n,...
:有代表一整个的意思
a(3,2) %访问矩阵a的第三行第二列的元素
a(1,:)=a(1,1:end) %访问矩阵a的第1行的所有元素
a(2,[3,4]) %访问矩阵a的第2行的第3和第4列元素
a(1:2,1:2) %访问矩阵a的第1到2行的1到2列的所有元素
a(:,2) %访问矩阵a每一行的第2列元素,即访问矩阵a的第二列
a(end-1,1) %访问矩阵a倒数第二行的第1列元素
a(5) %访问矩阵a的第5个元素,也就是先行后列排序的第五个(不提倡)
a(2,3)=5 %将矩阵a的第二行三列元素改为5
a(1:2,1:2)=4 %将第1到2行的1到2列全部赋为4