How can I write a for loop to do algebra over multiple arrays?

조회 수: 4 (최근 30일)
Havi Tripathi
Havi Tripathi 2021년 8월 20일
댓글: Havi Tripathi 2021년 8월 20일
I have 4 1x28 arrays.
I want to solve an equation for time, also linearly spaced as 1x28, for each value in this row.
a = linspace(3,28,28);
b = linspace(4,28,28);
c = linspace(5,28,28);
d = linspace(6,28,28);
time = linspace(1,28,28);
for i = 1:28:
value = a.*time ./ (c+d)
end
So, in the end, value should be a 28x28 array right. The first column of value, for example, should be value evaluated at time 1.
As it goes downward in column 1, it should be evaluated at time 2, etc till 28.
I'm not sure how to actually implement this. When I am doing it regularly, I get back a 1x28 array from value.
Does anyone know the approach or solution I am looking for?

채택된 답변

Wan Ji
Wan Ji 2021년 8월 20일
Do loop with indices of t:
a = linspace(3,28,28)';
b = linspace(4,28,28)';
c = linspace(5,28,28)';
d = linspace(6,28,28)';
time = linspace(1,28,28);
value = zeros(28,28);
for i = 1:28
value(:,i) = a.*time(i)./ (c+d);
end
And then the value becomes 28*28 as you want.

추가 답변 (1개)

Simon Chan
Simon Chan 2021년 8월 20일
Try this:
A = arrayfun(@(x) x.*time./(c+d), a, 'UniformOutput', false)
result = cell2mat(A')

카테고리

Help CenterFile Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

제품


릴리스

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by