#matlab #matrix
#matlab #матрица
Вопрос:
Сейчас я пытаюсь выполнить интерполяцию во t
(временном) направлении. У меня есть матрица Y
с. 100*100*3
Первый срез — это Y
значения в 2
секунду времени, второй срез — это Y
значения в 4
секунду времени, а третий срез — это Y
значения в 7
секунду времени. Я пытаюсь получить Y
значения в 3.4
сек и 5.7
сек
Например,
at time 2 sec Y(:,:,1)
at time 4 sec Y(:,:,2)
at time 7 sec Y(:,:,3)
Я пытаюсь выполнить интерполяцию по времени. Я использовал
Y_3_4 = interp2(X,Y,V,3.4)
Y_5_7 = interp2(X,Y,V,5.7)
Я просто обновляю свой вопрос
Y_3_4 = interp3(Y(1,:),Y(:,1),3.4)
Это не работает
Y_3_4 = interpn(1:size(Y,1), 1:size(Y,2), [2, 4], Y, 1:size(Y,1), 1:size(Y,2), [3.4]);
обновить код для 3.4
y_3_4 = interpn(1:size(Y,1), 1:size(Y,2), [2, 4], Y, 1:size(Y,1), 1:size(Y,2), [3.4]);
Спасибо
Комментарии:
1. interp3? Это 3-е измерение
2. @Андер Бигури. Спасибо. Я пробовал, это все еще не работает
3. @user6052232 это потому, что есть опечатка.
1;size(Y,2)
должно быть1:size(Y,2)
в обоих случаях. Шай только что исправил это, попробуйте еще раз.4. Кстати, говорить «это не работает», не указывая явно, какую ошибку вы получаете, или описывая, что произошло, не очень полезно.
5. вам нужно поместить [2,4,7], потому что Y явно состоит из 3 элементов в 3-м измерении, и вам нужно интерполировать весь объект. таким образом, [2,4] сам по себе выдаст ошибку. Если вы попробуете версию Шая, она будет работать так, как ожидалось.
Ответ №1:
Вы пробовали interpn
?
Для t=3.4
:
y_3_4 = interpn(1:size(Y,1), 1:size(Y,2), [2, 4, 7], Y, 1:size(Y,1), 1:size(Y,2), [3.4]);
Комментарии:
1. @interpn. Спасибо, пожалуйста, если мне это нужно только для каждой точки, должен ли код быть таким, как в моем обновленном вопросе (я обновляю код в соответствии с вашим кодом)
2. @TasosPapastylianou да. спасибо, что заметили это. это то, что происходит, когда вы отвечаете с мобильного…