Output argument "T" ( ) not assigned during call to " ".
5 views (last 30 days)
Show older comments
I am using one function that calls using two others. Here are the functions. I would like to use V as a set of numbers.
function mach_number=mach(V);
mach_number=(V.*10.^3)./(sqrt(1.40.*287.*(temp_alt(alt_velo(V)))));
end
function alt=alt_velo(V);
alt=((.0389*V.^5)-(.8115*V.^4)+(6.537*V.^3)-(25.45*V.^2)+(53.425*V)+3.8234)*(10.^3);
end
function T=temp_alt(h);
if (h >= 25000)
T=(-131.21+.00299.*h)+273.15;
elseif (11000 < h) & (h < 25000);
T=(-56.46+273.15);
elseif (h <= 11000);
T=(15.04-(.00649.*h))+273.15;
end
end
The function mach works when I enter mach(1:1:10) in the command window but when I do mach(.001:.001:1) I get the error below, I do not understand why. Please help.
>>mach(1:1:10)
ans =
Columns 1 through 5
3.12868748903117 5.86169984416974 8.53906953938449 11.0917563079045 13.5302732555593
Columns 6 through 10
15.907404087981 18.006585285012 18.997273867173 17.9653322339638 15.3656938914863
>> mach(.001:.001:1)
Error in temp_alt (line 12)
if (h >= 25000);
Output argument "T" (and maybe others) not assigned during call to "temp_alt".
Error in mach (line 12)
mach_number=(V.*10.^3)./(sqrt(1.40.*287.*(temp_alt(alt_velo(V)))));
3 Comments
Walter Roberson
on 15 Sep 2015
I just tested my answer there (the version that I corrected before you asked how to call it), and it certainly produces a vector the same length as I give as input.
mm = linspace(0,20,50);
nn = mach(mm);
plot(mm, nn);
Accepted Answer
Star Strider
on 14 Sep 2015
See if this construction works for you:
temp_alt = @(h) [((15.04-(.00649.*h))+273.15).*(h<=11000) + (-56.46+273.15).*((11000 < h) & (h < 25000)) + ((-131.21+.00299.*h)+273.15).*(h>=25000)];
6 Comments
More Answers (2)
the cyclist
on 14 Sep 2015
Edited: the cyclist
on 14 Sep 2015
The problem is that when you reach this statement
if (h >= 25000)
your variable h is a vector. If you read the documentation for if, you'll notice that this is only going to evaluate as "true" if it is true for every value of h.
With your problematic case, the condition fails every "if" expression evaluation, so T never gets assigned.
Walter Roberson
on 14 Sep 2015
This is the same code I gave you a solution for already http://uk.mathworks.com/matlabcentral/answers/242790-output-argument-t-and-maybe-others-not-assigned-during-call-to-temp_alt-error
2 Comments
Walter Roberson
on 16 Sep 2015
I tested the answer I posted there and it does certainly work.
mm = linspace(0,20,50);
nn = mach(mm);
plot(mm, nn);
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!