Mercurial > repos > public > sbplib
annotate Cell.m @ 480:4ce12f8b561c feature/sublassable_cellarray
Implement to string method
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Wed, 02 Aug 2017 12:01:25 +0200 |
parents | c5705458beb1 |
children | 970f1df2bfcf |
rev | line source |
---|---|
467 | 1 classdef Cell |
2 properties | |
3 data | |
4 end | |
5 methods | |
6 function obj = Cell(data) | |
7 if ~iscell(data) | |
8 class(data) | |
472
1dcac646c514
Add some missing semicolon
Jonatan Werpers <jonatan@werpers.com>
parents:
469
diff
changeset
|
9 error('Input argument to Cell must be a cell array'); |
467 | 10 end |
11 | |
12 obj.data = data; | |
13 end | |
14 | |
480
4ce12f8b561c
Implement to string method
Jonatan Werpers <jonatan@werpers.com>
parents:
479
diff
changeset
|
15 function str = toString(obj) |
4ce12f8b561c
Implement to string method
Jonatan Werpers <jonatan@werpers.com>
parents:
479
diff
changeset
|
16 str = sprintf('%s%s', class(obj), toString(obj.data)); |
4ce12f8b561c
Implement to string method
Jonatan Werpers <jonatan@werpers.com>
parents:
479
diff
changeset
|
17 end |
473 | 18 |
467 | 19 % function display(A) |
20 % n = size(A.data); | |
21 | |
22 % sizeStr = join(cellfun(@num2str, num2cell(n), 'UniformOutput',false),'x'); | |
23 % header = [sizeStr, 'Cell'] | |
24 | |
25 % disp() | |
26 % disp(A.data) | |
27 % % display(A.data) | |
28 % end | |
29 | |
478
d91f27460741
Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents:
474
diff
changeset
|
30 function s = size(A) |
d91f27460741
Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents:
474
diff
changeset
|
31 s = size(A.data); |
d91f27460741
Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents:
474
diff
changeset
|
32 end |
d91f27460741
Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents:
474
diff
changeset
|
33 |
d91f27460741
Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents:
474
diff
changeset
|
34 function l = length(A) |
d91f27460741
Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents:
474
diff
changeset
|
35 l = length(A.data); |
d91f27460741
Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents:
474
diff
changeset
|
36 end |
d91f27460741
Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents:
474
diff
changeset
|
37 |
479
c5705458beb1
Implement end function and fix test for colon indexing
Jonatan Werpers <jonatan@werpers.com>
parents:
478
diff
changeset
|
38 function ind = end(A,k,n) |
c5705458beb1
Implement end function and fix test for colon indexing
Jonatan Werpers <jonatan@werpers.com>
parents:
478
diff
changeset
|
39 ind = builtin('end',A.data, k, n); |
c5705458beb1
Implement end function and fix test for colon indexing
Jonatan Werpers <jonatan@werpers.com>
parents:
478
diff
changeset
|
40 end |
c5705458beb1
Implement end function and fix test for colon indexing
Jonatan Werpers <jonatan@werpers.com>
parents:
478
diff
changeset
|
41 |
478
d91f27460741
Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents:
474
diff
changeset
|
42 function B = transpose(A) |
d91f27460741
Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents:
474
diff
changeset
|
43 b = A.data.'; |
d91f27460741
Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents:
474
diff
changeset
|
44 B = callConstructor(A, b); |
d91f27460741
Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents:
474
diff
changeset
|
45 end |
d91f27460741
Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents:
474
diff
changeset
|
46 |
d91f27460741
Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents:
474
diff
changeset
|
47 function B = ctranspose(A) |
d91f27460741
Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents:
474
diff
changeset
|
48 b = A.data'; |
d91f27460741
Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents:
474
diff
changeset
|
49 B = callConstructor(A, b); |
d91f27460741
Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents:
474
diff
changeset
|
50 end |
d91f27460741
Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents:
474
diff
changeset
|
51 |
467 | 52 function disp(A) |
53 disp(A.data) | |
54 end | |
55 | |
56 function A = subsasgn(A, S, B) | |
57 a = subsasgn(A.data, S, B); | |
468
13362cf4dd89
Make the overloaded methods call the subclass constructor
Jonatan Werpers <jonatan@werpers.com>
parents:
467
diff
changeset
|
58 A = callConstructor(A, a); |
467 | 59 end |
60 | |
61 function B = subsref(A, S) | |
469
365fcdbb8736
Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents:
468
diff
changeset
|
62 switch S(1).type |
365fcdbb8736
Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents:
468
diff
changeset
|
63 case '()' |
365fcdbb8736
Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents:
468
diff
changeset
|
64 b = subsref(A.data, S); |
365fcdbb8736
Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents:
468
diff
changeset
|
65 B = callConstructor(A, b); |
365fcdbb8736
Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents:
468
diff
changeset
|
66 case '{}' |
365fcdbb8736
Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents:
468
diff
changeset
|
67 B = subsref(A.data, S); |
365fcdbb8736
Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents:
468
diff
changeset
|
68 case '.' |
365fcdbb8736
Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents:
468
diff
changeset
|
69 B = builtin('subsref',A, S); |
365fcdbb8736
Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents:
468
diff
changeset
|
70 otherwise |
472
1dcac646c514
Add some missing semicolon
Jonatan Werpers <jonatan@werpers.com>
parents:
469
diff
changeset
|
71 error('unreachable'); |
469
365fcdbb8736
Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents:
468
diff
changeset
|
72 end |
467 | 73 end |
74 | |
75 function C = horzcat(varargin) | |
76 dataArray = cell(1, length(varargin)); | |
77 | |
78 for i = 1:length(varargin) | |
79 dataArray{i} = varargin{i}.data; | |
80 end | |
81 | |
82 c = horzcat(dataArray{:}); | |
468
13362cf4dd89
Make the overloaded methods call the subclass constructor
Jonatan Werpers <jonatan@werpers.com>
parents:
467
diff
changeset
|
83 C = callConstructor(varargin{1}, c); |
467 | 84 end |
85 | |
474
c91464ef1dd9
Implement tests for horzcat and vertcat. Fix bugs found
Jonatan Werpers <jonatan@werpers.com>
parents:
473
diff
changeset
|
86 function C = vertcat(varargin) |
467 | 87 dataArray = cell(1, length(varargin)); |
88 | |
89 for i = 1:length(varargin) | |
90 dataArray{i} = varargin{i}.data; | |
91 end | |
92 | |
93 c = vertcat(dataArray{:}); | |
468
13362cf4dd89
Make the overloaded methods call the subclass constructor
Jonatan Werpers <jonatan@werpers.com>
parents:
467
diff
changeset
|
94 C = callConstructor(varargin{1}, c); |
467 | 95 end |
96 end | |
468
13362cf4dd89
Make the overloaded methods call the subclass constructor
Jonatan Werpers <jonatan@werpers.com>
parents:
467
diff
changeset
|
97 end |