Mercurial > repos > public > sbplib
annotate Cell.m @ 774:66eb4a2bbb72 feature/grids
Remove default scaling of the system.
The scaling doens't seem to help actual solutions. One example that fails in the flexural code.
With large timesteps the solutions seems to blow up. One particular example is profilePresentation
on the tdb_presentation_figures branch with k = 0.0005
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Wed, 18 Jul 2018 15:42:52 -0700 |
parents | 2ce903f28193 |
children |
rev | line source |
---|---|
483
025f084187d1
Add some documentation and minor clean up
Jonatan Werpers <jonatan@werpers.com>
parents:
482
diff
changeset
|
1 % Cell is a reimplementation of matlabs cell array with the benefit that it is subclassable |
025f084187d1
Add some documentation and minor clean up
Jonatan Werpers <jonatan@werpers.com>
parents:
482
diff
changeset
|
2 % It might be used for giving a typename to a cellarray to increase readability of the code. |
467 | 3 classdef Cell |
4 properties | |
5 data | |
6 end | |
483
025f084187d1
Add some documentation and minor clean up
Jonatan Werpers <jonatan@werpers.com>
parents:
482
diff
changeset
|
7 |
467 | 8 methods |
9 function obj = Cell(data) | |
483
025f084187d1
Add some documentation and minor clean up
Jonatan Werpers <jonatan@werpers.com>
parents:
482
diff
changeset
|
10 default_arg('data', {}); |
467 | 11 if ~iscell(data) |
472
1dcac646c514
Add some missing semicolon
Jonatan Werpers <jonatan@werpers.com>
parents:
469
diff
changeset
|
12 error('Input argument to Cell must be a cell array'); |
467 | 13 end |
14 | |
15 obj.data = data; | |
16 end | |
17 | |
480
4ce12f8b561c
Implement to string method
Jonatan Werpers <jonatan@werpers.com>
parents:
479
diff
changeset
|
18 function str = toString(obj) |
4ce12f8b561c
Implement to string method
Jonatan Werpers <jonatan@werpers.com>
parents:
479
diff
changeset
|
19 str = sprintf('%s%s', class(obj), toString(obj.data)); |
4ce12f8b561c
Implement to string method
Jonatan Werpers <jonatan@werpers.com>
parents:
479
diff
changeset
|
20 end |
473 | 21 |
478
d91f27460741
Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents:
474
diff
changeset
|
22 function s = size(A) |
d91f27460741
Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents:
474
diff
changeset
|
23 s = size(A.data); |
d91f27460741
Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents:
474
diff
changeset
|
24 end |
d91f27460741
Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents:
474
diff
changeset
|
25 |
580
2ce903f28193
Make Cell class work with isempty()
Jonatan Werpers <jonatan@werpers.com>
parents:
483
diff
changeset
|
26 function b = isempty(A) |
2ce903f28193
Make Cell class work with isempty()
Jonatan Werpers <jonatan@werpers.com>
parents:
483
diff
changeset
|
27 b = prod(size(A)) == 0; |
2ce903f28193
Make Cell class work with isempty()
Jonatan Werpers <jonatan@werpers.com>
parents:
483
diff
changeset
|
28 end |
2ce903f28193
Make Cell class work with isempty()
Jonatan Werpers <jonatan@werpers.com>
parents:
483
diff
changeset
|
29 |
478
d91f27460741
Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents:
474
diff
changeset
|
30 function l = length(A) |
d91f27460741
Implement size, length and transpose
Jonatan Werpers <jonatan@werpers.com>
parents:
474
diff
changeset
|
31 l = length(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 |
479
c5705458beb1
Implement end function and fix test for colon indexing
Jonatan Werpers <jonatan@werpers.com>
parents:
478
diff
changeset
|
34 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
|
35 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
|
36 end |
c5705458beb1
Implement end function and fix test for colon indexing
Jonatan Werpers <jonatan@werpers.com>
parents:
478
diff
changeset
|
37 |
478
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 | 48 function A = subsasgn(A, S, B) |
49 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
|
50 A = callConstructor(A, a); |
467 | 51 end |
52 | |
53 function B = subsref(A, S) | |
469
365fcdbb8736
Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents:
468
diff
changeset
|
54 switch S(1).type |
365fcdbb8736
Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents:
468
diff
changeset
|
55 case '()' |
481
970f1df2bfcf
Implement handeling of stacked indexing
Jonatan Werpers <jonatan@werpers.com>
parents:
480
diff
changeset
|
56 b = subsref(A.data, S(1)); |
469
365fcdbb8736
Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents:
468
diff
changeset
|
57 B = callConstructor(A, b); |
481
970f1df2bfcf
Implement handeling of stacked indexing
Jonatan Werpers <jonatan@werpers.com>
parents:
480
diff
changeset
|
58 if length(S) > 1 |
970f1df2bfcf
Implement handeling of stacked indexing
Jonatan Werpers <jonatan@werpers.com>
parents:
480
diff
changeset
|
59 B = subsref(B,S(2:end)); |
970f1df2bfcf
Implement handeling of stacked indexing
Jonatan Werpers <jonatan@werpers.com>
parents:
480
diff
changeset
|
60 end |
469
365fcdbb8736
Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents:
468
diff
changeset
|
61 case '{}' |
365fcdbb8736
Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents:
468
diff
changeset
|
62 B = subsref(A.data, S); |
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 = builtin('subsref',A, S); |
365fcdbb8736
Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents:
468
diff
changeset
|
65 otherwise |
472
1dcac646c514
Add some missing semicolon
Jonatan Werpers <jonatan@werpers.com>
parents:
469
diff
changeset
|
66 error('unreachable'); |
469
365fcdbb8736
Implement subsref properly
Jonatan Werpers <jonatan@werpers.com>
parents:
468
diff
changeset
|
67 end |
467 | 68 end |
69 | |
70 function C = horzcat(varargin) | |
71 dataArray = cell(1, length(varargin)); | |
72 | |
73 for i = 1:length(varargin) | |
74 dataArray{i} = varargin{i}.data; | |
75 end | |
76 | |
77 c = horzcat(dataArray{:}); | |
468
13362cf4dd89
Make the overloaded methods call the subclass constructor
Jonatan Werpers <jonatan@werpers.com>
parents:
467
diff
changeset
|
78 C = callConstructor(varargin{1}, c); |
467 | 79 end |
80 | |
474
c91464ef1dd9
Implement tests for horzcat and vertcat. Fix bugs found
Jonatan Werpers <jonatan@werpers.com>
parents:
473
diff
changeset
|
81 function C = vertcat(varargin) |
467 | 82 dataArray = cell(1, length(varargin)); |
83 | |
84 for i = 1:length(varargin) | |
85 dataArray{i} = varargin{i}.data; | |
86 end | |
87 | |
88 c = vertcat(dataArray{:}); | |
468
13362cf4dd89
Make the overloaded methods call the subclass constructor
Jonatan Werpers <jonatan@werpers.com>
parents:
467
diff
changeset
|
89 C = callConstructor(varargin{1}, c); |
467 | 90 end |
91 end | |
468
13362cf4dd89
Make the overloaded methods call the subclass constructor
Jonatan Werpers <jonatan@werpers.com>
parents:
467
diff
changeset
|
92 end |