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

在这里插入图片描述

例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

在这里插入图片描述
与上面的代码的逻辑类似:

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的第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
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

华毓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值