how to find sum different data for two different variables using loop in matlab
4 次查看(过去 30 天)
显示 更早的评论
I have different datas for two different variables (lambdai and b1). I need to find the separate M1 values and need to find sum M1 also. I couldn't find the answer. let me know if you will get the answer.
clc
clear all
lambdai=[0 5.6 22.4 57.4];
b1 = [100 80 120 90 70];
k=1
j=1;
l=1;
m=1;
for i=1:length(lambdai)
for s=1:length(b1)
M1=(b1(s).*lambdai(i))./lambda;
M(j,k)=M1;
j=j+1;
k=k+1;
end
end
sumM=sum(M)
4 个评论
Andy
2022-4-28
Once I set a value for lambda it works, All the values for M1 are stored in the array M(. , . ) . sum(M) is calculated as expected but perhaps you want to sum all numbers in the array in which case it should be
sumM = sum(M , 'all');
回答(2 个)
Jan
2022-4-28
Maybe you want to do: "Multiply each element of vector a with all elements of vector b, devide by 100 and get the sum of all results."
If you formulate the procedure clearly in naturla language, this is a good structure for the Matlab code also.
lambdai = [0 5.6 22.4 57.4];
b1 = [100 80 120 90 70];
lambda = 100;
M = zeros(length(lambdai), length(b1));
for i = 1:length(lambdai)
for s = 1:length(b1)
M(i, s) = b1(s) * lambdai(i) / lambda;
end
end
sumM = sum(M, 'all')
Of course you do not have to devide each element by lambda, because it is sufficient to divide the result only.
Matlab offers a way to do this without loops:
lambdai = [0 5.6 22.4 57.4];
b1 = [100 80 120 90 70];
lambda = 100;
M = lambdai.' * b1; % dyadic product: [4x1]*[1x5] = [4x5]
% Or:
% M = lambdai .* b1.'; % elementwise product: [1x4]*[5x1] = [5x4]
sumM = sum(M, 'all') / lambda
M.Rameswari Sudha
2022-4-28
1 个评论
Jan
2022-4-28
sum(X, 'all') was introduced in modern Matlab versions. For old versions use: sum(X(:)) instead.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!