- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmxarray.m
More file actions
Latest commit
110 lines (94 loc) · 2.48 KB
/
Copy pathmxarray.m
File metadata and controls
110 lines (94 loc) · 2.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
classdefmxarray < double
methods
functionobj= mxarray(data, type)
obj = obj@double(data);
if ndims(obj) ==2&& all(size(obj) ~=1)
obj = shiftdim(obj, -2);
elseif ndims(obj) ==3
obj = shiftdim(obj, -1).';
end
ifnargin>1
switchtype
case {'r', 'row'}
obj = shiftdim(obj, -1);
case {'c', 'col'}
obj = shiftdim(obj, -1).';
otherwise
error('Type must be one of {''row'', ''col''}.');
end
end
end
functionc= subsindex(a)
c = double(a) -1;
end
functionc= plus(a, b)
if isscalar(a) || isscalar(b)
c = mxarray(double(a) + double(b));
else
c = mxarray(mdbasicop(double(a), double(b), '+'));
end
end
functionc= minus(a, b)
if isscalar(a) || isscalar(b)
c = mxarray(double(a) - double(b));
else
c = mxarray(mdbasicop(double(a), double(b), '-'));
end
end
functionc= times(a, b)
if isscalar(a) || isscalar(b)
c = mxarray(double(a).*double(b));
else
c = mxarray(mdbasicop(double(a), double(b), '*'));
end
end
functionc= rdivide(a, b)
if isscalar(a) || isscalar(b)
c = mxarray(double(a)./double(b));
else
c = mxarray(mdbasicop(double(a), double(b), '/'));
end
end
functionc= mtimes(a, b)
if isscalar(a) || isscalar(b)
c = mxarray(double(a)*double(b));
elseif size(a, 1)*size(a, 2) ==1|| size(b, 1)*size(b, 2) ==1
c =a.*b;
else
c = mxarray(mdmtimes(double(a), double(b)));
end
end
functionc= det(a)
c = mxarray(mddet(double(a)));
end
functionc= inv(a)
c = mxarray(mdinv(double(a)));
end
function [v, d] = eig(a)
if any(~isfinite(a))
error('Input to EIG must not contain NaN or Inf.');
elseifnargout>1
[v, d] = mdeig(double(a));
v = mxarray(v);
d = mxarray(d);
else
v = mxarray(mdeig(double(a)));
end
end
functionc= ldivide(a, b)
c =b./a;
end
functionc= mldivide(a, b)
c = inv(a)*b; %#ok<*MINV>
end
functionc= mrdivide(a, b)
c =a*inv(b);
end
functionc= transpose(a)
c = mxarray(permute(a, [213:ndims(a)]));
end
functionc= ctranspose(a)
c = mxarray(conj(a.'));
end
end
end