Пределы функции водопада ... или нет? - PullRequest
0 голосов
/ 31 октября 2018

У меня проблема с выяснением того, как на фигуре водопада ось х может соответствовать значениям х, а не их точечным номерам. Этот вопрос кажется довольно простым, но в моем конкретном случае (из-за размера векторов) нелегко получить правильную фигуру. Поэтому мне очень нужна ваша помощь ... после нескольких часов неудовлетворенных результатов.

Предполагая, что два вектора x и y одинаковой длины записываются в момент времени t. Эта процедура выполняется k раз. Я, наконец, хочу построить график с водопадом у против х для разных времен. Я даю вам сценарий, который соответствует эксперименту, где только что добавлено xx, чтобы получить здесь две непрерывные функции x и y для разных времен. Результат почти идеален, но я хотел бы, чтобы значения x-y были на соответствующей оси x, y вместо номера точки.

xx=0:0.1:8;
for t=1:2:11
   x(t,:)=sin(t*xx.^2);
   y(t,:)=cos(t*xx.*4);
end
waterfall(x,y)

Проблема, вероятно, связана с разным размером x, y с t. Заранее спасибо за совет.

1 Ответ

0 голосов
/ 01 ноября 2018

Два комментария:

  1. waterfall принимает либо Z, либо X,Y,Z в качестве координат. Таким образом, ваша матрица x принимает значение Z, а другой аргумент отображается на вход C, который определяет цвет. Вы можете видеть, что график такой же, если вы делаете waterfall(x), за исключением разных цветов.

  2. Ваш x не монотонно увеличивается, поэтому если вы построите x(t,:) против y(t,:) для любого t, вы получите веб-подобный график, а не что-нибудь приятное для просмотра.

Так что я построю xx против y, и я немного изменю ваш y, чтобы он выглядел лучше. Я надеюсь, что вы можете принять эту идею и изменить ее, чтобы сделать то, что вам нужно.

Приведенный ниже код вообще не использует waterfall, он просто вызывает plot3 один раз для каждого t. Можно было бы вызвать plot3 с вашими полными матрицами x и y, но это так же просто.

В вызове plot3 x-координаты задаются xx, y-координаты t (просто повторяется, чтобы соответствовать ожидаемому размеру), а z-координаты y:

xx = 0:0.1:8;
for t = 1:2:11
   y = cos(t*xx/4);
   plot3(xx,repmat(t,size(xx)),y)
   hold on
end
xlabel('x')
ylabel('t')
zlabel('y=cos(tx/4)')

enter image description here

...