how to find sum different data for two different variables using loop in matlab

3 ビュー (過去 30 日間)
M.Rameswari Sudha
M.Rameswari Sudha 2022 年 4 月 28 日
コメント済み: Andy 2022 年 4 月 28 日
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 件のコメント
M.Rameswari Sudha
M.Rameswari Sudha 2022 年 4 月 28 日
yes. lamda = 100
Andy
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
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')
sumM = 392.8400
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
sumM = 392.8400

M.Rameswari Sudha
M.Rameswari Sudha 2022 年 4 月 28 日
I got error using code as per you sent :
??? Error using ==> sum
Trailing string input must be 'double' or 'native'.
let me know the reason why I got error.
  1 件のコメント
Jan
Jan 2022 年 4 月 28 日
sum(X, 'all') was introduced in modern Matlab versions. For old versions use: sum(X(:)) instead.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

製品


リリース

R2009b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by