我想在多行上循环一个方程

34次观看(过去30天)
贝丝·刘易斯
贝丝·刘易斯 2021年8月15日
编辑: 约翰D 'Errico 2021年8月15日
我知道怎么用excel,但不会用Matlab。
我有一个巨大的矩阵,我想在其中只为三列(a,b和c)创建一个方程,但在每一行上。我想让它加上一列,上面是方程(x)的答案。
方程是x=a*b^c
在每一行的列a, b和c中整数是不同的,所以我不能用一个简单的数字代替。
我认为这个问题的答案是for循环,但我是Matlab的初学者,所以可能是错误的。
在excel中,我这样做的方式是在第一行创建方程并向下拖动,如果这有意义的话。

接受的答案

约翰D 'Errico
约翰D 'Errico 2021年8月15日
编辑:约翰D 'Errico 2021年8月15日
你的问题是,你想写这个,就像你仍然在使用Excel一样。MATLAB不是一个电子表格,但你仍然会认为“你想使用电子表格”。
你有一个矩阵,里面有列。矩阵中的列没有字母名称。首先,我要创建一个有三列的矩阵。
M = randi(5,10,3)
M = 10×3
5 5 4 5 2 3 3 3 4 4 2 5 5 3 3 3 4 2 5 5 5 5 5 2 1 3 4 5 5 5 4 4
这里有一个10x3的矩阵。10行3列。每个元素都是1到5之间的整数(在本例中)。
现在你想用这些行组成一些东西。如何访问矩阵的列?使用索引。所以第一列(你可以称之为a)就是M(:,1)所以M中的所有行,但只有第一列。
result = M(:,1).*M(:,2).^M(:,3);
你会看到我使用了。*和。^来进行计算。这是因为我有三个元素组成的向量,你希望对这些向量元素集合中的每一个成员都做同样的计算。
我强烈建议您将计算结果放入一个新变量中,而不是将其附加到数组中。学会使用命名变量。同样,当您决定将结果附加为数组的新列时,您仍然认为您是在使用电子表格。
或者,您可以使用一个简单的循环来解决这个问题。
Nrows = size(M,1);M中有多少行?
结果= 0 (Nrows,1);%预分配结果
ind = 1:Nrows%循环遍历每一行
result(ind) = M(ind,1)*M(ind,2)^M(ind,3);为每一行计算一个结果
结束
在这两种情况下,我们将有:
结果
结果= 10×1
3125 40 243 128 135 48 15625 10 3072 3125
摒弃电子表格思维。
2的评论

登录评论。

更多答案(1)

图像分析
图像分析 2021年8月15日
试试这个;
columnsToProcess = [4,9,17];%不管…
[rows, columns] = size(x);%原始矩阵的大小。
col = columnsToProcess只处理这些特定的列。
Row = 1:表示行
获取a、b和c参数。
这些值逐行变化。
不管你怎样得到它。
不管你怎样得到它。
无论你怎样得到它。
X (row, col) = a * b ^ c;
结束
结束

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!