裴裴裴之Miraitowa 2022-04-02 16:21 采纳率: 100%
浏览 40
已结题

matlab代码,运行太慢,求同效果简洁代码

问题遇到的现象和发生背景

我利用subject.ct(256x256x63)分割出了5种脑部的组织,期望给他们上色并在同一个图里面显示出来;但运行这段代码时候,花费近30分钟,十分缓慢,效果也不好。

问题相关代码
 for j=1:z%该循环是比较subject.ct数据和其他数据
       for m=1:x
           for n=1:y
                if subject.ct(m,n,j)==ctbone(m,n,j)
                    labelct(m,n,j)=1;
                elseif subject.ct==ctair
                    labelct(m,n,j)=2;
                elseif  subject.ct==ctwater
                    labelct(m,n,j)=3;
                elseif subject.ct==ctfat
                    labelct(m,n,j)=4;
                elseif subject.ct==ctbrain
                    labelct(m,n,j)=5;
                else label(m,n,j)=6;
                end
           end
       end
      colorimg(:,:,j) = drawlabel2image(subject.ct(:,:,j),label(:,:,j),color,alpha);%drawlabel2img是一段自动上色的代码,通过它给每一层上色
   end
    
  • 写回答

3条回答 默认 最新

  • A-Chin 2022-04-02 17:08
    关注

    代码慢的原因是循环层数太多,首先subject.ct,ctbone和labelct等变量的长度是一致的。

    可以直接用 == 运算,给个示例:

    X = [1 2 3 4 5 6 7 8 9 0];
    Y = [1 2 2 2 3 6 7 8 9 0];
    B = zeros(size(X));
    B(X == Y) = 1
    
    

    输出结果:

    B =
    
         1     1     0     0     0     1     1     1     1     1
    

    楼主的问题也可以用这种方法,示意代码如下:

    labelct(:) = 6;
    labelct(subject.ct == ctbone) = 1;
    labelct(subject.ct == ctair) = 2;
    labelct(subject.ct == ctwater) = 3;
    labelct(subject.ct == ctfat) = 4;
    labelct(subject.ct == ctbrain) = 5;
    for j=1:z
        %drawlabel2img是一段自动上色的代码,通过它给每一层上色
        colorimg(:, :, j) = drawlabel2image(subject.ct(:, :, j),label(:, :, j), color, alpha);
    end
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月10日
  • 已采纳回答 4月2日
  • 创建了问题 4月2日

悬赏问题

  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 Revit2020下载问题
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数
  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 seatunnel 怎么配置Elasticsearch