【问题标题】:Matlab, save output in array , loopMatlab,将输出保存在数组中,循环
【发布时间】:2017-08-06 14:50:52
【问题描述】:

我想创建一个可以在每次循环时存储输出的数组。我认为问题在于,在每次新迭代中,数字都从头开始计数,因此它只存储最后一次迭代!在每次迭代中,输出都是array(7x3),所以总的来说我必须有(28,3)。但是我尝试了很多,我得到了一个ARRAY (28,3),除了最后7行之外,所有的都是零。 非常感谢

你可以看到下面的代码:

 for t=1:ncell % in my case I have 4 cells
    ti=sort(T,2)              
    tt= sort(Cell{t}.ExBot,2)
    tq= sort(Cell{t}.ExTop,2)
    te= sort(Cell{t}.ExBT,2)
    %k=0
    z=0
    cc=[]
    %%%%% for exbottom
    I=ones(size(ti,1),1);
    for j=1:size(tt,1)
        for i=1:size(ti,1)
            if tt(j,:)==ti(i,:)
                k=k+1 ;
                %c(k,:)=[ti(j,:), ti(j+1,:)]
                I(i)=0;

                cc(k,:)=Y(i,:);
                cc(size(tt,1)+1,:)=cc(1,:)




            else
            end

        end


    end

end

【问题讨论】:

  • 循环结束时k的值是多少?
  • 如果您想获得可验证的答案,请发布缺少的变量,例如 TCell。确保您发布的代码是可执行的。
  • 调试代码,在“if ..”处添加断点
  • k值只是先写输出的第一行的值……每次都在变化! T也是我的网格的三角剖分。所以 cc 是每个单元格周围的位置,它是一个数组(7x3)。在我的情况下,我有四个单元格,所以我想要一个通用数组,它将包含每个单元格周围的所有位置,这意味着一个数组(28, 3).. 没有可变单元格,但 ncell 等于 4(这意味着 4 个单元格)

标签: arrays matlab output store


【解决方案1】:

尽管 cmets 中提到的更多信息会有所帮助,但根据您提供的信息,问题很可能是在您开始处理每个单元格时将 cc 设置为空。

cc=[];

退出最外层循环后,您将只获得最后一次迭代的结果。

在相关说明中,您可能希望使用isequalall 来比较向量,即if isequal(tt(j,:),ti(i,:))

【讨论】:

    猜你喜欢
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 2017-06-18
    相关资源
    最近更新 更多