Making my function run for multiple input values

19 views (last 30 days)
function t = TrueThickness(strike,dip,pTop,pBase)
% transformatiion matrix
a = [sin(strike) cos(strike) 0;...
cos(strike)*cos(dip) -sin(strike)*cos(dip) -sin(dip);...
-cos(strike)*sin(dip) sin(strike)*sin(dip) -cos(dip)];
% transform points
p3n = zeros(3);
p4n = zeros(3);
for i = 1:3
for j = 1:3
p3n(i) = a(i,j)*pTop(j) + p3n(i);
p4n(i) = a(i,j)*pBase(j) + p4n(i);
end
end
% compute thicknessess
tt = abs(p3n(3) - p4n(3))
end
saved file as test12414!!
Here I make new matlab file and try running my function
-----------------------------------------------------------------------------------------------------------------------------------
pTop= [724277 4944457 1270]
pBase = [ 724371 4944506 1299]
strike = 161.5651
dip = 16.0389
test12414(strike,dip,pTop,pBase)
the code works and is great but I want to be able to have several values for my strike,
dip ,pTop and pBase. for example lets say i want to use the script 3 times for different values.
Then pTop and pBase will be 3x3 vectors so have 9 numbers and strike and dip will have 3 values
how would I do this?

Answers (1)

ME
ME on 14 Nov 2019
Edited: ME on 14 Nov 2019
You could call the function inside a ‘for’ loop. That would enable you to feed in the different input values. For example:
In1=[val1 val2 val3];
In2=[val1 val2 val3];
for i=1:3
[out1(i) out2(i)]=function(In1(i) in2(i))
end
Obviously, adjust for your particular application.
  2 Comments
Eric
Eric on 14 Nov 2019
Edited: Eric on 14 Nov 2019
Thank you for you answer this makes sense but I ran into a small problem (I think).
test12414(strike,dip,pTop,pBase) I replaced this with:
for b=1:3
out(b,:) = test12414(strike(b), dip(b),pTop(b,:),pBase(b,:))
end
gives error:
Output argument "t" (and maybe others) not assigned during call to "test12414".
Error in svarararada (line 12)
out(b,:) = test12414(strike(b), dip(b),pTop(b,:),pBase(b,:))
any idea how to fix this?
And my function is supposed to output 1 value but since I have b=1:3 it should give 3 values
Walter Roberson
Walter Roberson on 14 Nov 2019
You define
function t = TrueThickness(strike,dip,pTop,pBase)
but you never assign anything to t . You do, however, assign to tt but do not use tt after the assignment.

Sign in to comment.

Categories

Find more on Debugging and Analysis in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!