gpt4 book ai didi

matlab - 如何以优雅的方式编写此代码(MATLAB 中的元胞数组和结构)

转载 作者:行者123 更新时间:2023-12-04 06:08:32 26 4
gpt4 key购买 nike

我要绘制连接点 在 MATLAB 中。

我的连接点来自“stats”的连接对象,其中每个“stat”来自 BW 区域 Prop 结构。

我写的代码有效,但它有很多“丑陋”,即使尝试了各种方法也无法修复。

function plot_line( line )

a = cell2mat(line);
b = {a.Centroid};

matx = {};
maty = {};

for i = 1:size(b,2)
matx{end+1} = b{i}(1);
maty{end+1} = b{i}(2);
end

plot ( cell2mat(matx), cell2mat(maty) );

end

你能帮我把这段代码做得更好吗?这并不重要,因为我的代码运行良好,而且行很短(<100 分),因此性能不是问题。

只是知道这个小功能是如何做的真的很好 应该写成 以正确的方式,没有 for 循环和 3 次 cell2mat 调用。

在我的例子中:
  • 线是 <1xn cell> ,
  • line{1}有房产'Centroid'
  • line{i}.Centroid(1)是 x 坐标和
  • line{i}.Centroid(2)是 y 坐标。

  • 实际上,我所需要的只是绘图 line{i}.Centroid(1) , line{i}.Centroid(2)i = 1:size(line,2) ,但我不知道如何。

    最佳答案

    例子:

    line = repmat({struct('Centroid',[1 2])},1,5);   %# similar to the data you have

    %# extract x/y coordinates
    x = cellfun(@(s)s.Centroid(1),line)
    y = cellfun(@(s)s.Centroid(2),line)

    %# plot
    plot(x,y)

    你也可以这样做:
    xy = cell2mat(cellfun(@(s)s.Centroid, line, 'UniformOutput',false)');
    plot(xy(:,1),xy(:,2))

    关于matlab - 如何以优雅的方式编写此代码(MATLAB 中的元胞数组和结构),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8073025/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com