@RicardoGonsales

Как перевести код с Matlab на C#?

Здравствуйте!
Есть один довольно большой проект на MATLAB, который желательно перевести на С#

Проект написан классами, пример кода ниже, сам код сделан похожим на шарповый.

Я прекрасно понимаю, что надо будет расставлять типы, делать какие-то интерфейсы, что автоматизированных утилит я вряд ли найду, и что надо будет пилить это руками, но пугает объем - несколько тысяч (хз, тысячи 3-4) строк кода.

Есть ли хотя бы какие-то конвертеры синтаксиса, чтобы не менять все эти function.... end, if... end, for... end на классический синтаксис фигурными скобками?
Пример кода. Весь код в таком ООП стиле: класс-методы-наследование, есть ивенты

classdef ENode<handle
   
    properties
        nodes_range %Диапазон схемных узлов, соответствующих графическому узлу Зачем нужен?
        connected_elements={};
        is_repacked=false
    end
    
    
    methods
        
        function copy_object=Clone(this)
            constructor=str2func(class(this));
            copy_object=constructor(this.nodes_range);
            %!!! У КОПИИ is_repacked=false!!!
        end
            
        function this=ENode(nodes_range)
             if nargin==1
                 this.nodes_range=nodes_range;                
             end         
        end
        
        function RefreshNodeRange(this,deleted_range) 
           if ~isempty(deleted_range)

                has_selfnode_deleted=false;
                new_range=this.nodes_range;
                        for i=1:length(deleted_range)
                            for j=1:length(this.nodes_range)
                                if deleted_range(i)<this.nodes_range(j)
                                    new_range(j)=new_range(j)-1;
                                elseif deleted_range(i)==this.nodes_range(j) 
                                    new_range(j)=0; %присваивем ему нулевой диапазон
                                    has_selfnode_deleted=true;
                                end
                            end
                        end
                        
                        %На случай, если мы удаляем узел, входящий в
                        %диапазон логического узла
                        if has_selfnode_deleted %если мы удаляли и свои узлы
                            k=1;
                            while 1
                                if new_range(k)==0
                                    new_range=[];
                                else
                                    k=k+1;
                                end
                                if k>length(this.nodes_range)
                                    break
                                end
                            end
                        end
                this.nodes_range=new_range;    
                %2)Диапазон лежит целиком ниже (удаляется нижестоящий) или совпадает (удаляется сам элемент). Тогда ничего не делаем.
           end    
        end

    end
end
  • Вопрос задан
  • 113 просмотров
Пригласить эксперта
Ответы на вопрос 3
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
Вакансии с Моего Круга Все вакансии
Заказы с Фрилансим Все заказы