Как построить массив с помощью цикла for?

#matlab #plot

#matlab #построить

Вопрос:

Я хочу построить график внутри for цикла. Я попробовал следующий код, который также использовался hold on , но график по-прежнему пуст. Я не знаю, где я ошибаюсь.

 M2 = true(21, 6);
M2(1:2, 3:5) = false;

R = [0.5:0.1:2.5];
H=[0:5:25];
m=21,
n=6,
for i=1:m
    for j=1:n        
        if M(i,j)==0
            plot(H(i),R(j), 'color', 'r')
            drawnow();
        end
    end
end
 

Комментарии:

1. попробуйте plot(H(i),R(j), 'r.') . Вы строите отдельные точки. Постройте ожидаемые строки. Если вы не скажете ему, что это точка для рисования (точка после красной), он попытается нарисовать линию, но линия с 1 точкой невидима

Ответ №1:

Как уже сказал Андер Бигури, plot функция фактически ничего не рисует, когда вы указываете только одну точку и не указываете никаких маркеров.

Но, если вы хотите создать какой-то анимированный сюжет, одновременно отображается одна из точек:

 h = scatter(0, 0, 'r');
xlim([min(H) max(H)]);
ylim([min(R) max(R)]);
for i=1:m
    for j=1:n
        if M(i,j)==0
            set(h, 'xdata', H(i), 'ydata', R(j));
            pause(0.5);
            drawnow();
        end
    end
end
 

Или, если вы хотите показать все точки вместе, вам даже не нужен цикл:

 [HH, RR] = meshgrid(H, R);
scatter(HH(~M), RR(~M), 'r');
xlim([min(H) max(H)]);
ylim([min(R) max(R)]);