- class(x) returns double
- methodsview(x) causes an error.
x.abs()?
18 次查看(过去 30 天)
显示 更早的评论
>> x=-1;
>> x.abs()
??? Attempt to reference field of non-structure array.
Why?
Notice that Matlab Help says "All MATLAB data types are implemented as object-oriented classes."
0 个评论
采纳的回答
Fangjun Jiang
2011-11-11
That is true, but it doesn't imply that x you declared will have abs as its method.
I think that claim you quoted means that MATLAB's data types are internally implemented as object-oriented classes. The double data type doesn't provide any method.
更多回答(2 个)
Daniel Shub
2011-11-11
I disagrees with both answers. Starting with
x = -1;
You can see that abs is a method with
methods(x)
metaclass(x)
methodsview(class(x))
Interesting, as Fangjun mentioned,
methodsview(x)
gives an error. Exploring the double class in general
?double
methodsview double
both list abs as a method.
Finally, creating a simply dummy class
classdef myClass < double
methods
function newClass = myClass(input)
newClass = newClass@double(input);
end
end
end
makes it so that
y = myClass(-1);
y.abs()
works.
1 个评论
Fangjun Jiang
2011-11-11
+1. Interesting finding! I guess TMW has some inconsistency problem needs to be sorted out.
Drew Weymouth
2011-11-11
Although your variable x is technically a MATLAB "class" ( double ), it does not have any methods associated with it. While MATLAB does have some built-in classes with methods (such as Audioplayer for example), most data types are basically primitive values. To get the absolute value of any scalar value, use y = abs(x). If x is a matrix, then this will take the absolute value of each component. If x is complex, then it will give the magnitude.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Data Type Identification 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!