MATLAB - For 循环
MATLAB - for 循环
Section titled “MATLAB - for 循环”for 循环是一种控制流语句,允许代码重复执行。它非常适合您需要迭代特定次数的情况,例如,遍历数组的元素。
MATLAB 中 for 循环的基本语法是:
for index = values % 每次迭代中要执行的代码 % ...endvalues 表达式可以有多种形式:
| 格式 | 描述 |
|---|---|
start:end | 在每次迭代中,index 变量从 start 递增到 end,步长为 1。 |
start:step:end | 在每次迭代中,index 变量按 step 的值递增。step 可以是负数,表示倒计数。 |
array | 在每次迭代中,将 array 的连续列分配给 index。对于行向量或列向量,它将向量的每个元素分配给 index。 |
示例 1:简单迭代
Section titled “示例 1:简单迭代”此循环从 1 迭代到 5,并在每一步中打印循环变量 k 的值。
for k = 1:5 fprintf('Iteration number: %d\n', k);end当您运行此代码时,它会显示以下结果:
Iteration number: 1Iteration number: 2Iteration number: 3Iteration number: 4Iteration number: 5示例 2:使用自定义步长迭代
Section titled “示例 2:使用自定义步长迭代”此循环从 10 倒计数到 0,步长为 -2。
for countdown = 10:-2:0 disp(countdown)end当您运行文件时,它会显示:
10
8
6
4
2
0示例 3:遍历数组
Section titled “示例 3:遍历数组”您可以直接遍历向量的元素。
data_points = [1.2, 5.5, 2.8, 4.1];for val = data_points fprintf('Processing value: %.1f\n', val);end输出将是:
Processing value: 1.2Processing value: 5.5Processing value: 2.8Processing value: 4.1最佳实践:预分配以提升性能
Section titled “最佳实践:预分配以提升性能”for 循环的一个常见用途是构建数组或矩阵。然而,在循环内部重复调整数组大小(例如,通过追加元素)在 MATLAB 中非常慢。最佳实践是在循环开始之前为数组**预分配(pre-allocate)**内存。
低效代码(避免使用)
Section titled “低效代码(避免使用)”tic; % 启动计时器results = []; % 初始化一个空数组for i = 1:100000 results(i) = i^2; % 数组在每次迭代中增长endtoc; % 停止计时器% 耗时明显更长。高效代码(最佳实践)
Section titled “高效代码(最佳实践)”tic; % 启动计时器num_elements = 100000;results = zeros(1, num_elements); % 预分配内存for i = 1:num_elements results(i) = i^2; % 填充预分配的值endtoc; % 停止计时器% 耗时短得多。向量化:for 循环的替代方案
Section titled “向量化:for 循环的替代方案”虽然 for 循环是必要的,但 MATLAB 中的许多任务可以使用**向量化(vectorization)**更高效地执行。这意味着一次对整个数组应用操作,而不是逐个元素操作。如果您可以将计算表达为向量化操作,它几乎总是比循环更快。
% 目标:对向量中的每个元素进行平方
% 使用 for 循环(较慢)x = 1:1000;y = zeros(size(x));for i = 1:length(x) y(i) = x(i)^2;end
% 使用向量化(更快更简洁)x = 1:1000;y_vectorized = x.^2; % .^ 运算符执行元素级幂运算
% y 和 y_vectorized 都包含相同的结果。在编写 for 循环之前,始终寻找向量化解决方案。循环最好保留给那些本质上是顺序的且无法向量化的过程。