changeset 624:0e20f4c9a94e feature/grids

Factor out function for calculating the number of components
author Jonatan Werpers <jonatan@werpers.com>
date Fri, 20 Oct 2017 22:59:30 +0200
parents 190941ec12d8
children 55e6267be117
files +grid/evalOn.m
diffstat 1 files changed, 23 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
diff -r 190941ec12d8 -r 0e20f4c9a94e +grid/evalOn.m
--- a/+grid/evalOn.m	Fri Oct 20 18:55:02 2017 +0200
+++ b/+grid/evalOn.m	Fri Oct 20 22:59:30 2017 +0200
@@ -20,11 +20,31 @@
         error('grid:evalOn:WrongNumberOfInputs', 'The number of inputs of the function must match the dimension of the domain.')
     end
 
+    x = g.points();
+    k = numberOfComponents(func, x);
 
-    % Get coordinates
-    x = g.points();
+    % Evaluate gf = func(x(:,1),x(:,2),...,x(:,dim));
+    if(g.D == 1)
+        gf = func(x);
+    else
+        eval_str = 'gf = func(x(:,1)';
+        for i = 2:g.D
+            eval_str = [eval_str, sprintf(',x(:,%d)',i)];
+        end
+        eval_str = [eval_str, ');'];
+        eval(eval_str);
+    end
 
-    % Find the number of components
+    % Reorganize gf
+    gf_temp = gf;
+    gf = zeros(g.N*k, 1);
+    for i = 1:k
+        gf(i:k:end) = gf_temp((i-1)*g.N + 1 : i*g.N);
+    end
+end
+
+% Find the number of vector components of func
+function k = numberOfComponents(func, x)
     if size(x,1) ~= 0
         x0 = x(1,:);
     else
@@ -50,23 +70,4 @@
     if size(f0,2) ~= 1
         error('grid:evalOn:VectorValuedWrongDim', 'A vector valued function must be given as a column vector')
     end
-
-    % Evaluate gf = func(x(:,1),x(:,2),...,x(:,dim));
-    if(dim == 1)
-        gf = func(x);
-    else
-        eval_str = 'gf = func(x(:,1)';
-        for i = 2:dim
-            eval_str = [eval_str, sprintf(',x(:,%d)',i)];
-        end
-        eval_str = [eval_str, ');'];
-        eval(eval_str);
-    end
-
-    % Reorganize gf
-    gf_temp = gf;
-    gf = zeros(g.N*k, 1);
-    for i = 1:k
-        gf(i:k:end) = gf_temp((i-1)*g.N + 1 : i*g.N);
-    end
 end
\ No newline at end of file