Pitambar新德里MathWorks
你可以学习如何创建具有在for循环使用MATLAB底层模式的矩阵®,以及如何为相同的进程使用预分配。
大家好,欢迎回到另一个MATLAB视频。今天,我们要谈论的循环创造一个矩阵。我们要回答几个问题,做到这一点。
因此,这里的问题1.比方说,我有一个矢量1,3,6,8,9,我想从它使下面的矩阵,这一个就在这里。我该怎么做?
如果我们在这个矩阵仔细观察,我们可以看到一个模式。每一行中的值等于1加在它上面的值。见,此第一列读取1,2,3,4,5,和第二列读取3,4,5,6,7,等等,等等。
现在我们找到了模式,问题是,我们如何在循环中创建这个矩阵?第一步是创建初始向量。a等于1 3 6 8 9。在这个例子中,我不打算隐藏输出。我会在视频的最后告诉你们为什么。
现在我们有了向量,我们需要考虑在循环中创建矩阵。我们知道我们需要向当前向量追加4行。这意味着我们需要在循环中进行四次迭代。我要为I = 2到5创建一个索引变量。然后在循环内部,我将编写以下命令:A (I,逗号):冒号等于A (I - 1,逗号):冒号+ 1,然后结束。
我们来看一下这个表述。我们进入循环,i = 2。A (I,逗号,冒号)表示我们要索引到第I行的所有列,在本例中是第2行。第二部分,等于A (I - 1,逗号,+ 1)意思是第二行等于1加上它前面一行的值,在这里是第一行,然后结束。经过一次迭代,A变成了一个2×5的矩阵。
我们回到循环的顶部。这次,I等于3。我们对第三行中的所有列进行索引,并将这些值设置为1加上它上面的行。结果是A是一个3×5的矩阵。我们将继续遍历循环直到遍历所有的索引变量。
现在,让我们看看当我们点击运行时会发生什么。正如我们所看到的,我们得到了我们所期望的矩阵。因为我们没有隐藏这个语句,所以我们也可以看到每个迭代。
让我们做一个稍微不同的例子。这次,我们从这个列向量开始。我们想要得到下面的矩阵。我们该怎么做呢?
第一步是找出规律。在本例中,每个列的值是其前一列的值的两倍。就像之前一样,我们来创建初始向量B,这次,我们在B后面加了三列。
所以,当我们建立循环,我们会说,因为我等于2:4。接下来是写在MATLAB代码模式。所以,我会写冒号逗号B I等于冒号逗号我减1,然后结束的2倍B中。因此,如果我们运行这个,我们应该得到我们期待的矩阵。而我们做的。现在,我只想提一提,那我提供的解决方案是唯一的。你可以想出一些稍微不同的是仍然有效。
所以,现在,有些人可能会指出,这个过程会更快,如果我们预先分配内存。而且你们会是正确的。预分配是通过显式地定义生长阵列的最终尺寸或成长矩阵来优化MATLAB代码的一种方法。这可能不会影响到我们当前的例子中的表现。由于矩阵是非常小的。但值得注意的是对于生长在大小真正的大矩阵。
让我们在第一个示例中使用预分配。除了两行之外,我们的代码看起来与之前的代码非常相似。第一行将定义最终矩阵的大小。在这种情况下,它是5×5的。我将创建一个0的占位符矩阵,它的大小是这样的。
我的代码的其余部分几乎是相同的。我会继续前进,从第一个例子中复制过来,让一个小调整。在这里,我们有索引到零矩阵的第一行并覆盖包含在该向量中的值,这些值。但仅此而已。现在,如果我们打运行,我们会看到,而不是具有生长在大小,它只是覆盖已经存在的行。
因此,让我们回头去看第一个问题,并看看我们的矩阵是如何越来越大这里。要测试你的这种理解,看看你是否可以申请相同的过程,我们做了第二个问题。无论如何,感谢你们在调整,而且我会看到你在另一个视频家伙。