2013-05-09 4 views
0

я получаю некоторые странные проблемы в моей MatLab коде, это часть моего кода:черчения из цикла в MATLAB

for k=1:length(box11) 
    num_pts1(k)=sum(length(find(box11(:,k)>0))); 
    size1=sum(length(find(box11(:,:)>0))); 
    perc1(k)=(num_pts1(k)/size1)*100; 
end 
plot(delta,perc1(k),'*') 

Однако, проблема заключается в том, что я получаю perc1 фиксируется в моем участке. поэтому я вижу прямую линию на графике. но я хотел бы иметь разные номера, которые дают кривую линию для меня .. plzzzzzzzzzzzzzzzz, помощь :(!!!

+0

Две вещи неясны для меня: результат, который вы пытаетесь получить против того, что вы получаете, и что такое 'box11'. Пожалуйста, будьте понятнее. (Прикрепление сюжета, которое вы получите, может помочь) – gzm0

+0

Привет, это коробка11: box11 = flipud (полный (разреженный (delta11, Sref11, delta11))); где delta11 и Sref11 - две матрицы 51 * 1 – PLS

+0

Вы имеете в виду 'plot (delta, perc1, '*')'? иначе вы просто рисуете одну точку, 'perc1 (k)' где 'k' является' legnth (box11) '. И что такое 'дельта'? – Dan

ответ

0

Вы должны помнить, что length возвращает длину массива. Таким образом, в инструкции

num_pts1(k)=sum(length(find(box11(:,k)>0))); 

оператор sum действует на скаляр (которая равна длине массива find(box11(:,k)>0)), а не на массив. То же самое справедливо для инструкции

size1=sum(length(find(box11(:,:)>0))); 

Так, если длина find(box11(:,k)>0) не изменяется с k, то ваш perc1 будет оставаться постоянным.

+0

К сожалению, не получилось, что вы имеете в виду :(.. что я должен изменить тогда ... спасибо большое – PLS

+0

Возможно, вам не нужна 'length' в двух инструкциях, связанных с' num_pts1 'и' size1'. Прежде чем продолжить, прочитайте несколько вводных учебников/книг по Matlab. – JackOLantern

+0

mmmmm :(, проблема все еще существует :(.. и мне нужна длина, чтобы быть там – PLS

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