how to create for loop in below formula

조회 수: 2 (최근 30일)
M.Devaki Mohanarangam
M.Devaki Mohanarangam 2023년 6월 16일
편집: Malay Agarwal 2023년 6월 16일
Lc1 = LP1;
Lc2 = LP2-Lc1;
Lc3 = LP3-(Lc1+Lc2);
Lc4 = LP4-(Lc1+Lc2+Lc3);
Lc5 = LP5-(Lc1+Lc2+Lc3+Lc4);
Lc6 = LP6-(Lc1+Lc2+Lc3+Lc4+Lc5);

답변 (4개)

Ishit
Ishit 2023년 6월 16일
Hi Devaki, Use this to get desired results
LP = [LP1, LP2, LP3, LP4, LP5, LP6]; % define the LP values
Lc = zeros(size(LP)); % preallocate the Lc array
for i = 1:numel(LP)
if i == 1
Lc(i) = LP(i);
else
Lc(i) = LP(i) - sum(Lc(1:i-1));
end
end

Saurabh
Saurabh 2023년 6월 16일
편집: Saurabh 2023년 6월 16일
% Define the LP values
LP = [LP1, LP2, LP3, LP4, LP5, LP6];
% Initialize the array to store the results
Lc = zeros(1, 6);
% Loop through the LP values and calculate the Lc values
for i = 1:6
if i == 1
Lc(i) = LP(i);
else
Lc(i) = LP(i) - sum(Lc(1:i-1));
end
end
%Hope this was helpful

Stephen23
Stephen23 2023년 6월 16일
Your inefficient approach (with anti-pattern numbered variable names):
LP1 = rand;
LP2 = rand;
LP3 = rand;
LP4 = rand;
LP5 = rand;
LP6 = rand;
Lc1 = LP1
Lc1 = 0.0735
Lc2 = LP2-Lc1
Lc2 = 0.2472
Lc3 = LP3-(Lc1+Lc2)
Lc3 = 0.6106
Lc4 = LP4-(Lc1+Lc2+Lc3)
Lc4 = -0.2612
Lc5 = LP5-(Lc1+Lc2+Lc3+Lc4)
Lc5 = 0.0396
Lc6 = LP6-(Lc1+Lc2+Lc3+Lc4+Lc5)
Lc6 = -0.0814
The MATLAB approach (with vectors):
LP = [LP1,LP2,LP3,LP4,LP5,LP6];
Lc = LP;
for k = 2:numel(LP)
Lc(k) = LP(k)-sum(Lc(1:k-1));
end
disp(Lc)
0.0735 0.2472 0.6106 -0.2612 0.0396 -0.0814
The best approach:
Lc = [LP(1),diff(LP)]
Lc = 1×6
0.0735 0.2472 0.6106 -0.2612 0.0396 -0.0814
Why do you keep deleting and then reposting this exact question? Or were those classmates of yours?

Malay Agarwal
Malay Agarwal 2023년 6월 16일
편집: Malay Agarwal 2023년 6월 16일
Hi, Devaki
You can use the following code, which generalizes it to a vector of any size:
% Declare an array of the variables
% This could be an arbitrary number of variables
% Here, I declare it as a random vector of 6 variables
LP = rand(1, 6);
% Initialize the result array with zeros
Lc = zeros(size(LP));
% Since Lc1 = LP1, set Lc(1) to the first value in LP(1)
Lc(1) = LP(1);
[rows, cols] = size(LP);
% Loop and set the remaining values
for i=2:cols
% sum(Lc(1:i - 1)) is the sum of the first i - 1 elements in Lc
Lc(i) = LP(i) - sum(Lc(1:i-1));
end

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by