frequently used function for table variable
2 次查看(过去 30 天)
显示 更早的评论
I have a table with many temperature variables in C and I wanted to convert it into F using fuction. So I created following but it does not seems to work. Any way to create a function which are kind of common conversion which can be used again and again.
function Table_CtoF(T,OldVariable,NewVariable)
T.(NewVariable) = (T.(OldVariable)*9/5)+32;
end
0 个评论
采纳的回答
Star Strider
2021-6-7
I am not certain what ‘T’ looks like.
Something like this would work —
T = table(randi([-40 40],5,1),'VariableNames',{'OldVariable'})
T.NewVariable = Table_CtoF(T)
function NewVariable = Table_CtoF(T)
NewVariable = (T.('OldVariable')*9/5)+32;
end
The single quotes are important when using this sort of variable addressing.
10 个评论
dpb
2021-6-8
T.New = (T.(Old)*9/5)+32;
should be
T.(New) = (T.(Old)*9/5)+32;
You created the variable "New", not the one of the string value in variable New
更多回答(1 个)
dpb
2021-6-7
Don't pass a table to your function, have it accept numeric inputs and return same; then just call it with the table names. Much more generic/useful that way.
>> which -all C2F
C:\Users\Duane\Documents\MATLAB\Utilities\C2F.m
>> type C2F
function F=C2F(C)
% convert degree C to F
F=1.8*C+32;
end
>>
Usage in your case would be something like
T.F=C2F(T.C);
if your table is T and the centigrade temperature variable is "C"
I'd be more tempted to use something like
T.C=C2F(T.C); % store temperature F in original variable
ixC=find(matches(T.Properties.VariableNames,'C')); % find which variable index it is
T.Properties.VariableNames(ixC)='F'; % label it as 'F' instead
so as to not carry but the one temperature variable.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Whos 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!