annotate +blockmatrix/fromMatrixTest.m @ 1037:2d7ba44340d0 feature/burgers1d

Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Fri, 18 Jan 2019 09:02:02 +0100
parents a5f1b0267dba
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
208
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
1 function tests = fromMatrixTest()
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
2 tests = functiontests(localfunctions);
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
3 end
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
4
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
5 function testErrorNonMatchingDim(testCase)
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
6 in = {
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
7 {magic(5), {[1 2 3], [4]}},
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
8 {magic(5), {[1 1 1 1 1 1], [5]}},
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
9 {magic(5), {[5], [1 1 1 1 1 1]}},
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
10 {ones(4,2),{[2 3],[2]}},
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
11 {ones(4,2),{[2 2],[3]}},
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
12 };
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
13
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
14 for i = 1:length(in)
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
15 testCase.verifyError(@()blockmatrix.fromMatrix(in{i}{:}),'blockmatrix:fromMatrix:NonMatchingDim');
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
16 end
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
17 end
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
18
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
19 function testFromMatrix(testCase)
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
20 cases = {
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
21 {
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
22 {[],{[],[]}},
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
23 {}
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
24 },
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
25 {
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
26 {
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
27 magic(3),
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
28 {[3],[3]}
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
29 },
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
30 {magic(3)}
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
31 },
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
32 {
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
33 {
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
34 magic(3),
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
35 {[1 1 1],[1 1 1]}
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
36 },
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
37 mat2cell(magic(3),[1 1 1],[1 1 1])
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
38 },
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
39 {
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
40 {
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
41 [17 24 1 8 15; 23 5 7 14 16; 4 6 13 20 22; 10 12 19 21 3; 11 18 25 2 9],
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
42 {[1 4],[2 3]}
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
43 },
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
44 {
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
45 [17 24], [1 8 15];
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
46 [23 5; 4 6; 10 12; 11 18], [7 14 16; 13 20 22; 19 21 3; 25 2 9];
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
47 };
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
48 },
579
a5f1b0267dba Be less strict about what is considered a block matrix
Jonatan Werpers <jonatan@werpers.com>
parents: 208
diff changeset
49 {
a5f1b0267dba Be less strict about what is considered a block matrix
Jonatan Werpers <jonatan@werpers.com>
parents: 208
diff changeset
50 {
a5f1b0267dba Be less strict about what is considered a block matrix
Jonatan Werpers <jonatan@werpers.com>
parents: 208
diff changeset
51 magic(3),
a5f1b0267dba Be less strict about what is considered a block matrix
Jonatan Werpers <jonatan@werpers.com>
parents: 208
diff changeset
52 {[1 0 2],[1 2 0]}
a5f1b0267dba Be less strict about what is considered a block matrix
Jonatan Werpers <jonatan@werpers.com>
parents: 208
diff changeset
53 },
a5f1b0267dba Be less strict about what is considered a block matrix
Jonatan Werpers <jonatan@werpers.com>
parents: 208
diff changeset
54 mat2cell(magic(3),[1 0 2],[1 2 0])
a5f1b0267dba Be less strict about what is considered a block matrix
Jonatan Werpers <jonatan@werpers.com>
parents: 208
diff changeset
55 },
a5f1b0267dba Be less strict about what is considered a block matrix
Jonatan Werpers <jonatan@werpers.com>
parents: 208
diff changeset
56 {
a5f1b0267dba Be less strict about what is considered a block matrix
Jonatan Werpers <jonatan@werpers.com>
parents: 208
diff changeset
57 {
a5f1b0267dba Be less strict about what is considered a block matrix
Jonatan Werpers <jonatan@werpers.com>
parents: 208
diff changeset
58 zeros(0,1),
a5f1b0267dba Be less strict about what is considered a block matrix
Jonatan Werpers <jonatan@werpers.com>
parents: 208
diff changeset
59 {0,1},
a5f1b0267dba Be less strict about what is considered a block matrix
Jonatan Werpers <jonatan@werpers.com>
parents: 208
diff changeset
60 },
a5f1b0267dba Be less strict about what is considered a block matrix
Jonatan Werpers <jonatan@werpers.com>
parents: 208
diff changeset
61 {zeros(0,1)}
a5f1b0267dba Be less strict about what is considered a block matrix
Jonatan Werpers <jonatan@werpers.com>
parents: 208
diff changeset
62 },
208
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
63 };
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
64 for i = 1:length(cases)
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
65 out = convertToFull(blockmatrix.fromMatrix(cases{i}{1}{:}));
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
66 expected = cases{i}{2};
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
67 testCase.verifyEqual(out,expected);
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
68 end
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
69 end
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
70
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
71 function C = convertToFull(C)
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
72 [N,M] = size(C);
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
73 for i = 1:N
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
74 for j = 1:M
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
75 C{i,j} = full(C{i,j});
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
76 end
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
77 end
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
78 end