How to use an output from on file as input in another file.

9 Ansichten (letzte 30 Tage)
Sergio
Sergio am 27 Mär. 2024
Kommentiert: Sergio am 31 Mär. 2024
The given file "enzymeGeneral.m" generates a vector. " test-modified.m" generates a Jacobian.
How can I use these answers and sum them up as follows:
sums up all the vector entries into one scale. Using the output vector of enzymeLesstSquares.m
and
sums up all the jacobian entries acting on each respective vector entry from menzymeLesstSquares.m (usinng the output Jacobian of test-modified.m)
Here I try with
function [r,g] = enzymeGeneral(k)
[r]=enzymeLeastSquares(result,grad_all);
[g]=test_modified(result,grad_all);
S=sum(r,8)
V=sum(g,8)
Where "result" is supposed to call for the answer from the respective m. file.
But this doesn't work, since S and V do not call on the answers from enzymeLeastSquares.m and test_modified.m in order to sum them as given in S and V:
How can I use the answers from enzymeLeastSquares.m and test_modified.m as inputs for S and V in summation?
Thanks
  2 Kommentare
Alexander
Alexander am 29 Mär. 2024
"enzymeGeneral.m" doesn't creat a vector but an error:
>> enzymeGeneral
Unrecognized function or variable 'result'.
Error in enzymeGeneral (line 2)
[r,g]=enzymeLeastSquares(result,grad_all);
Hence, you should rework your scripts.
Sergio
Sergio am 30 Mär. 2024
Bearbeitet: Sergio am 30 Mär. 2024
@Alexander Thanks for your comment. What you indicate to do is the main question I am asking. How do I take the answer from enzymeLeastSquares.m as a input for enzymeGeneral.m, and the answer of test-modified.m as input for enzymeGeneral.m for that summation operation?

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Alexander
Alexander am 30 Mär. 2024
Bearbeitet: Alexander am 30 Mär. 2024
Do you mean something like this:
function [S,V]=enzymeLeastSquares(r,g);
S=sum(r,8)
V=sum(g,8)
and the calling function might look like this:
function [S,V] = enzymeLeastSquares(k)
N = 4; % number of experiments
result = zeros(2*N,1); % pre-allocate result arrays
grad_all = zeros(2*N,2);
dt=0.01;
T=1;
%k=[5;1];
y0_all = [2 1 1 4; 1 1 0 1];
y1_all = [1.0 0.5 0.3 2.4; 2.1 1.6 0.9 2.7];
for ii = 1:N
y0 = y0_all(:,ii);
y1 = y1_all(:,ii);
[SP,grad]=enzyme(y0,k,dt,T);
result((ii-1)*2+[1 2]) = y1-SP;
grad_all((ii-1)*2+[1 2],:) = -grad;
end
[S,V] = enzymeGeneral(grad_all, result)
But I haven't tested this jet. It shows only how to pass prameters onto a function and get results back.
  4 Kommentare
Alexander
Alexander am 31 Mär. 2024
Maybe this:
function [result,grad_all] = enzymeLeastSquares(k)
N = 4; % number of experiments
result = zeros(2*N,1); % pre-allocate result arrays
grad_all = zeros(2*N,2);
dt=0.01;
T=1;
%k=[5;1];
y0_all = [2 1 1 4; 1 1 0 1];
y1_all = [1.0 0.5 0.3 2.4; 2.1 1.6 0.9 2.7];
for ii = 1:N
y0 = y0_all(:,ii);
y1 = y1_all(:,ii);
[SP,grad]=enzyme(y0,k,dt,T);
result((ii-1)*2+[1 2]) = y1-SP;
grad_all((ii-1)*2+[1 2],:) = -grad;
end
result = sum(result);
Sergio
Sergio am 31 Mär. 2024
Thanks; I got Not enough input arguments.
Error in enzymeGeneral (line 13)
[SP,grad]=enzyme(y0,k,dt,T);
but I will take it further with my Professor.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu MATLAB finden Sie in Help Center und File Exchange

Produkte


Version

R2024a

Community Treasure Hunt

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

Start Hunting!

Translated by