⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subsasgn.m

📁 利用电磁场的源激发方法来计算光子晶体波导例如光子晶体光纤
💻 M
字号:
function obj = subsasgn(obj, s, b)

% SUBSASGN	subsasgn function for pointers.

%   Copyright 2004, 2005 Nikolai Yu. Zolotykh
%   Thanks to Gang Liang for a lot of suggestions

obj = do_subsasgn(obj, s, b);
% We use subfunction do_subsasgn instead of direct using subsasgn 
% recursively to guarantee that just do_subsasgn is called:
% in subsasgn(obj, s, b) if obj or b is pointer then MATLAB calls subsasgn(...)
% recursively, otherwise MATLAB calls builtin('subsasgn', ...)

function obj = do_subsasgn(obj, s, b)

field1 = s(1).subs;
type1 = s(1).type;

if length(s) == 1
    if isa(obj, 'pointer')
        if type1 ~= '.'
            error(['Attemt to specify subscript of a pointer with ' ...
                '''' type1 '''.\n' ...
                'Specify a field for a pointer object as obj.field_name']);
        end;
        obj = assgn(obj, field1, b);
    else
        obj = builtin('subsasgn', obj, s(1), b);
    end;
else
    if isa(obj, 'pointer')
        if type1 ~= '.'
            error(['Attemt to specify subscript of a pointer with ' ...
                '''' type1 '''.\n' ...
                'Specify a field for a pointer object as obj.field_name']);
        end;
        [sub_obj, exst] = ref(obj, field1);
        if exst ~= 1
            % If pointer is NULL or field does not exist we create new field:
            sub_obj = [];
            sub_obj = builtin('subsasgn', sub_obj, s(2:end), b);
        else
            sub_obj = do_subsasgn(sub_obj, s(2:end), b);
        end;
        obj = assgn(obj, field1, sub_obj);
    else
        try
            sub_obj = subsref(obj, s(1));
        catch
            sub_obj = [];
        end
        sub_obj = do_subsasgn(sub_obj, s(2:end), b);
        obj = builtin('subsasgn', obj, s(1), sub_obj);
    end;
end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -