for循环嵌套

写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

for循环嵌套_第1张图片

例2:编写第一行有一个*,每行多一个,一共有10行的脚本

i = 0
for j=(1:10) %外循环,让内循环每次加1,循环10for i=1:(i+1) %内循环,i=1:1时输出1*,i=1:2时输出2*,以此类推循环着输出*
        fprintf('*')
    end
    fprintf('\n')
end

for循环嵌套_第2张图片
与上面的代码的逻辑类似:

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

for循环嵌套_第3张图片

例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

for循环嵌套_第4张图片

例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的第12行的12列的所有元素
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       %将第12行的12列全部赋为4

你可能感兴趣的:(MATLAB完整学习过程,matlab,开发语言)