Switch to unified view

a b/functions/@mmo/unitaryopp.m
1
% support function for mmo object
2
3
function obj2 = unitaryopp(f, obj1, varargin);
4
5
    % make new memory mapped data file (blank)
6
    % ----------------------------------------
7
    newFileName = mmo.getnewfilename;
8
    data = memmapfile(obj1.dataFile, 'writable', obj1.writable, 'format', { 'single' obj1.dimensions 'x' });
9
    fid = fopen(newFileName, 'w');
10
    if obj1.dimensions(end) == 1, obj1.dimensions(end) = []; end
11
    ss.type = '()';
12
    ss.subs(1:length(obj1.dimensions)-1) = { ':' };
13
    for index = 1:obj1.dimensions(end)
14
        ss.subs{length(obj1.dimensions)} = index;
15
        tmpdata = f(subsref(data.Data.x, ss), varargin{:});
16
        fwrite(fid, tmpdata, 'float');
17
    end
18
    fclose(fid);    
19
    
20
    % copy the data
21
    % -------------
22
    obj2 = mmo(newFileName, obj1.dimensions, true, obj1.transposed);
23
    obj2 = updateWorkspace(obj2);
24