matlab转换c++代码,这个问题要怎么改呀?

利用Matlab coder转换代码,明明已经改了格式了,还是报错,应该怎么修改呀?在线发问,求大家伙帮忙解答

img

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7519119
  • 你也可以参考下这篇文章:Matlab coder生成C++代码
  • 除此之外, 这篇博客: 编写Matlab代码判断多圆间的关系,并求出其交点或切点中的 Matlab code 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • main.m

    clear;close all;clc;
    % 随机生成n个圆心的坐标
    n = 5;
    Cic_Coordinate = rand(n,2)*50;
    %随机生成n个圆的半径
    Cic_R = 15+rand(n,1)*15;
    
    % 画n个圆
    figure;
    hold on;
    for i = 1:n
        theta = 0:0.001:2*pi;
        x = Cic_Coordinate(i,1)+Cic_R(i)*cos(theta);
        y = Cic_Coordinate(i,2)+Cic_R(i)*sin(theta);
        plot(x,y,'-');
    end
    axis equal
    
    
    %判断多圆之间的关系
    for i = 1:n-1
        for j = i+1:n
            Cic_0 = Cic_Coordinate(i,:);
            Cic_1 = Cic_Coordinate(j,:);
            
            x0=Cic_0(1); y0=Cic_0(2); r0=Cic_R(i);
            x1=Cic_1(1); y1=Cic_1(2); r1=Cic_R(j);
            d=sqrt((x0-x1)^2+(y0-y1)^2);    %两圆心距离
            if d>r0+r1
                disp(['第',num2str(i),'个圆与第',num2str(j),'个圆的位置关系为:外离'])
                disp(['第',num2str(i),'个圆的坐标、半径是:',num2str(x0),'  ',num2str(y0),'  ',num2str(r0),'  ',...
                      '第',num2str(j),'个圆的坐标、半径是:',num2str(x1),'  ',num2str(y1),'  ',num2str(r1)])
            elseif d<abs(r0-r1)
                disp(['第',num2str(i),'个圆与第',num2str(j),'个圆的位置关系为:内含'])
                disp(['第',num2str(i),'个圆的坐标、半径是:',num2str(x0),'  ',num2str(y0),'  ',num2str(r0),'  ',...
                      '第',num2str(j),'个圆的坐标、半径是:',num2str(x1),'  ',num2str(y1),'  ',num2str(r1)])
            elseif d==r0+r1
                disp(['第',num2str(i),'个圆与第',num2str(j),'个圆的位置关系为:外切'])
                disp(['第',num2str(i),'个圆的坐标、半径是:',num2str(x0),'  ',num2str(y0),'  ',num2str(r0),'  ',...
                      '第',num2str(j),'个圆的坐标、半径是:',num2str(x1),'  ',num2str(y1),'  ',num2str(r1)])
                p=CircleCross(Cic_0,Cic_1,r0,r1);
                plot(p(:,1),p(:,2),'.','MarkerSize',15);
                disp(['外切点坐标是:',num2str(p(1)),'  ',num2str(p(2))]);
            elseif d==abs(r0-r1)
                disp(['第',num2str(i),'个圆与第',num2str(j),'个圆的位置关系为:内切'])
                disp(['第',num2str(i),'个圆的坐标、半径是:',num2str(x0),'  ',num2str(y0),'  ',num2str(r0),'  ',...
                      '第',num2str(j),'个圆的坐标、半径是:',num2str(x1),'  ',num2str(y1),'  ',num2str(r1)])
                p=CircleCross(Cic_0,Cic_1,r0,r1);
                plot(p(:,1),p(:,2),'.','MarkerSize',15);
                disp(['内切点坐标是:',num2str(p(1)),'  ',num2str(p(2))]);
            else
                disp(['第',num2str(i),'个圆与第',num2str(j),'个圆的位置关系为:相交'])
                disp(['第',num2str(i),'个圆的坐标、半径是:',num2str(x0),'  ',num2str(y0),'  ',num2str(r0),'  ',...
                      '第',num2str(j),'个圆的坐标、半径是:',num2str(x1),'  ',num2str(y1),'  ',num2str(r1)])
                p=CircleCross(Cic_0,Cic_1,r0,r1);
                plot(p(:,1),p(:,2),'.','MarkerSize',15);
                disp(['交点坐标是:',num2str(p(1,1)),'  ',num2str(p(1,2)),'和',...
                    num2str(p(2,1)),'  ',num2str(p(2,2))]);
            end
        end
        
    end
    
    

    CircleCross.m

    function p=CircleCross(Cic_0,Cic_1,R_0,R_1)
    
        x0=Cic_0(1);
        y0=Cic_0(2);
        r0=R_0;
    
        x1=Cic_1(1);
        y1=Cic_1(2);
        r1=R_1;
    
        d=sqrt((x0-x1)^2+(y0-y1)^2);    %两圆心距离
    
        k1=(y0-y1)/(x0-x1);         %连接两圆心直线
        b1=y1-k1*x1;
    
        k2=-1/k1;               %公共弦方程直线
        b2=(r0^2-r1^2-x0^2+x1^2-y0^2+y1^2)/(2*(y1-y0));
    
        p=[];
        if d==abs(r1-r0) || d==r1+r0        %相切时的交点
            xx=-(b1-b2)/(k1-k2);
            yy=-(-b2*k1+b1*k2)/(k1-k2);
            p=[xx yy];
        elseif abs(r1-r0)<d && d<r1+r0      %相交时的交点
                                            %公共弦方程与其中一个圆的交点
            xx1=(-b2* k2 + x1 + k2 *y1 - sqrt(-b2^2 + r1^2 + k2^2 *r1^2 - 2 *b2* k2* x1 - k2^2* x1^2 + 2*b2*y1 + 2*k2*x1*y1 - y1^2))/(1 + k2^2);
            yy1=k2*xx1+b2;
         
            xx2=(-b2* k2 + x1 + k2 *y1 + sqrt(-b2^2 + r1^2 + k2^2 *r1^2 - 2 *b2* k2* x1 - k2^2* x1^2 + 2*b2*y1 + 2*k2*x1*y1 - y1^2))/(1 + k2^2);  
            yy2=k2*xx2+b2;
            
            p=[xx1 yy1;xx2 yy2];         
        end
    
    end