annotate Cell.m @ 478:d91f27460741 feature/sublassable_cellarray

Implement size, length and transpose
author Jonatan Werpers <jonatan@werpers.com>
date Wed, 02 Aug 2017 10:51:44 +0200
parents c91464ef1dd9
children c5705458beb1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
467
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
1 classdef Cell
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
2 properties
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
3 data
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
4 end
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
5 methods
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
6 function obj = Cell(data)
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
7 if ~iscell(data)
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
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
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
10 end
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
11
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
12 obj.data = data;
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
13 end
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
14
473
605a8c075388 Add to string stub.
Jonatan Werpers <jonatan@werpers.com>
parents: 472
diff changeset
15 % function str = toString(obj)
605a8c075388 Add to string stub.
Jonatan Werpers <jonatan@werpers.com>
parents: 472
diff changeset
16
605a8c075388 Add to string stub.
Jonatan Werpers <jonatan@werpers.com>
parents: 472
diff changeset
17 % end
605a8c075388 Add to string stub.
Jonatan Werpers <jonatan@werpers.com>
parents: 472
diff changeset
18
467
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
19 % function display(A)
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
20 % n = size(A.data);
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
21
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
22 % sizeStr = join(cellfun(@num2str, num2cell(n), 'UniformOutput',false),'x');
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
23 % header = [sizeStr, 'Cell']
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
24
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
25 % disp()
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
26 % disp(A.data)
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
27 % % display(A.data)
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
28 % end
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
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
d91f27460741 Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents: 474
diff changeset
38 function B = transpose(A)
d91f27460741 Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents: 474
diff changeset
39 b = A.data.';
d91f27460741 Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents: 474
diff changeset
40 B = callConstructor(A, b);
d91f27460741 Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents: 474
diff changeset
41 end
d91f27460741 Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents: 474
diff changeset
42
d91f27460741 Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents: 474
diff changeset
43 function B = ctranspose(A)
d91f27460741 Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents: 474
diff changeset
44 b = A.data';
d91f27460741 Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents: 474
diff changeset
45 B = callConstructor(A, b);
d91f27460741 Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents: 474
diff changeset
46 end
d91f27460741 Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents: 474
diff changeset
47
467
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
48 function disp(A)
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
49 disp(A.data)
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
50 end
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
51
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
52 function A = subsasgn(A, S, B)
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
53 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
54 A = callConstructor(A, a);
467
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
55 end
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
56
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
57 function B = subsref(A, S)
469
365fcdbb8736 Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents: 468
diff changeset
58 switch S(1).type
365fcdbb8736 Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents: 468
diff changeset
59 case '()'
365fcdbb8736 Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents: 468
diff changeset
60 b = subsref(A.data, S);
365fcdbb8736 Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents: 468
diff changeset
61 B = callConstructor(A, b);
365fcdbb8736 Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents: 468
diff changeset
62 case '{}'
365fcdbb8736 Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents: 468
diff changeset
63 B = subsref(A.data, S);
365fcdbb8736 Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents: 468
diff changeset
64 case '.'
365fcdbb8736 Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents: 468
diff changeset
65 B = builtin('subsref',A, S);
365fcdbb8736 Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents: 468
diff changeset
66 otherwise
472
1dcac646c514 Add some missing semicolon
Jonatan Werpers <jonatan@werpers.com>
parents: 469
diff changeset
67 error('unreachable');
469
365fcdbb8736 Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents: 468
diff changeset
68 end
467
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
69 end
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
70
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
71 function C = horzcat(varargin)
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
72 dataArray = cell(1, length(varargin));
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
73
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
74 for i = 1:length(varargin)
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
75 dataArray{i} = varargin{i}.data;
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
76 end
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
77
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
78 c = horzcat(dataArray{:});
468
13362cf4dd89 Make the overloaded methods call the subclass constructor
Jonatan Werpers <jonatan@werpers.com>
parents: 467
diff changeset
79 C = callConstructor(varargin{1}, c);
467
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
80 end
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
81
474
c91464ef1dd9 Implement tests for horzcat and vertcat. Fix bugs found
Jonatan Werpers <jonatan@werpers.com>
parents: 473
diff changeset
82 function C = vertcat(varargin)
467
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
83 dataArray = cell(1, length(varargin));
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
84
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
85 for i = 1:length(varargin)
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
86 dataArray{i} = varargin{i}.data;
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
87 end
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
88
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
89 c = vertcat(dataArray{:});
468
13362cf4dd89 Make the overloaded methods call the subclass constructor
Jonatan Werpers <jonatan@werpers.com>
parents: 467
diff changeset
90 C = callConstructor(varargin{1}, c);
467
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
91 end
8d3c3da3a589 Initial commit
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
92 end
468
13362cf4dd89 Make the overloaded methods call the subclass constructor
Jonatan Werpers <jonatan@werpers.com>
parents: 467
diff changeset
93 end