2013-12-19 4 views
0

Я работаю над программой scilab, чтобы усреднить 3d-матрицу в кубах. Это в основном сделано, но я хочу установить размер в заданную сумму (все вокселы суммируются до заданного количества в каждом кубе), а я продолжайте ломать программу каждый раз, когда я пытаюсь добавить эту функцию.Создание 3D-матрицы среднего уровня в scilab?

function totSAR = comptS(Material, SAR, a, b, c, a1, b1, c1, grams) 

si=size(SAR); 
radius=0; 
OK=0; 
totwei=0; 
totSAR=0; 
totpx=0; 
while (totwei<=grams*1e-3 && OK==0) 
    totwei2=totwei; 
    totSAR2=totSAR; 
    totpx2=totpx; 
    totwei=0; 
    totpx=0; 
    totSAR1=0; 
    totSAR=0; 
    radius=radius+1; 
    for o=-radius:radius 
    rado=floor(sqrt(radius^2-o^2)); 
     for m=-rado:rado 
      radm=floor(sqrt(rado^2-m^2)); 
      for n=-radm:radm 
       if (a+m >= 1 && a+m <= si(1) && b+n >=1 && b+n <=si(2) && c+o >= 1 && c+o <si(3)) 
       if totwei<=10e-3 
        totwei=totwei+a1*b1*c1*Material(a+m, b+n, c+o); 
         if SAR(a+m, b+n, c+o)>0 
        totpx=totpx+1; 
         totSAR=totSAR+SAR(a+m, b+n, c+o); 
       end 
      end 
      end 
     end 
    end 
end 
if totSAR==totSAR1 
    OK=1; 
end 
end 

coefw = (grams*1e-3 - totwei2)/(totwei-totwei2); 
totpxs = coefw*(totpx-totpx2); 
totSARs = coefw*(totSAR-totSAR2); 

totpx; 
if totpx>0 
totSAR=(totSAR2+totSARs)/(totpx2+totpxs); 
end 
end 

Извините, что я немного новичок, и спасибо за помощь!

ответ

1

Ваша единственная проблема заключается в том, что вы не обновляете переменную totwei при создании voxel. Вам нужно будет вычесть значение вокселя из оставшегося желаемого веса и добавить его к общему весу.

totwei = totwei + voxel 
valleft = valleft - voxel 
+0

Спасибо, я знал, что это должна быть какая-то глупая ошибка. – AlanGhalan

Смежные вопросы