Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
1 / 3 / 0
Регистрация: 25.04.2015
Сообщений: 474

4-х мерная интерполяция

29.05.2018, 12:20. Показов 3752. Ответов 44
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!Прошу помощи в проведении 4-х мерной интерполяции. Есть два файла. Один с табличными значениями, другой с результатами эксперимента «Эксперимент», для которого собственно и нужно сделать интерполяцию. Файл с табличными данными (структура его показана в файле «Структура.doc») для удобства работы с ним я перегнал в текстовый файл «Таблица.txt». Использую следующий код
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
clc; clear all; clf;
rm = importdata('Эксперимент.txt');
Mrm = rm.data (:,1);
alpharm = rm.data (:,2);
deltarm = rm.data (:,3);
phirm = rm.data (:,4);
 
x = importdata('Таблица.txt');
Mt = x.data (:,1); % t-значит табличное
alphat = x.data (:,2);
deltat = x.data (:,3);
phit = x.data (:,4);
Cxt = x.data (:,5);
 
Cxrm = interp4(Mt,alphat,deltat,phit,Cxt, Mrm, alpharm, deltarm, phirm,'linear');
но вылетает ошибка

«Undefined function 'interp4' for input arguments of type 'double'.
Error in Untitled (line 16)
Cxrm = interp4(Mt,alphat,deltat,phit,Cxt, Mrm, alpharm, deltarm, phirm,'linear');»

Что я делаю не так?

Файл "Таблица.txt"

Файл "Структура.txt"
Вложения
Тип файла: txt Эксперимент.txt (2.4 Кб, 9 просмотров)
Тип файла: rar Таблица.rar (38.9 Кб, 8 просмотров)
Тип файла: rar Структура.rar (28.9 Кб, 9 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.05.2018, 12:20
Ответы с готовыми решениями:

4-х мерная интерполяция
Как в MachCad осуществить 4-х мерную интерполяцию. Имеются таблицы опытных значений Cx(M,a,b,fi) и таблица составляющих аргументов...

2у мерная кубическая интерполяция
Мой вопрос скорее теоретический, и программирования конкретно он не касается, однако код пишу я на C# поэтому и написать решил сюда.. ...

N-мерная схема Бернулли
Помогите разобраться, пожалуйста. Задача: Каждая из величин X1,...,Xn с одинаковой вероятностью может принимать целые значения от 1 до m....

44
1 / 3 / 0
Регистрация: 25.04.2015
Сообщений: 474
08.06.2018, 19:03  [ТС]
Студворк — интернет-сервис помощи студентам
Зачем Вам это. Скажем так некоторые дополнительные параметры от которых зависит Cx. Посмотрите выше файл структуры, может больше поймёте.
0
 Аватар для faraonCar
164 / 144 / 49
Регистрация: 29.10.2014
Сообщений: 738
08.06.2018, 19:07
Вот как должно быть
Matlab M
1
2
3
4
cy=[0.1 .2 .5];
al=[0 3 6];
cy_exp=[0.1 .15 .25 .45 .5]
al=interp1(cy,al,cy_exp)
Добавлено через 1 минуту
Цитата Сообщение от GAZot Посмотреть сообщение
Зачем Вам это.
мне не нужно, но вы ж интерполируете их
Matlab M
1
Cxrm = interpn(deltat,phit,alphat,Mt,Cx, deltarm, phirm,alpharm,Mrm, 'linear');
Добавлено через 1 минуту
Цитата Сообщение от faraonCar Посмотреть сообщение
deltat размер 19 на 1, phit 13 на 1
вот они
0
1 / 3 / 0
Регистрация: 25.04.2015
Сообщений: 474
08.06.2018, 19:12  [ТС]
cy=[0.1 .2 .5];
al=[0 3 6];
cy_exp=[0.1 .15 .25 .45 .5]
al=interp1(cy,al,cy_exp)

Пожалуйста поясните, не очень понятно.

Добавлено через 2 минуты
Вы посмотрели файл "Структура" выше
0
 Аватар для faraonCar
164 / 144 / 49
Регистрация: 29.10.2014
Сообщений: 738
08.06.2018, 19:15
Цитата Сообщение от GAZot Посмотреть сообщение
Пожалуйста поясните, не очень понятно.
Я Вам привел пример, как работает интерполяция, есть зависимость cy(al) и эксперимент cy_exp, хочу получить соответствующие (cy_exp) значения al надо было так написать
Matlab M
1
al_exp=interp1(cy,al,cy_exp)
Добавлено через 2 минуты
Цитата Сообщение от GAZot Посмотреть сообщение
Вы посмотрели файл "Структура" выше
я Вам уже написал, что тут все Ок.
Цитата Сообщение от faraonCar Посмотреть сообщение
Вот для этих параметров все ОК deltarm, phirm,alpharm,Mrm.
0
1 / 3 / 0
Регистрация: 25.04.2015
Сообщений: 474
08.06.2018, 19:22  [ТС]
faraonCar у меня бес проблем поучается двумерная интерполяция, когда Cx зависит от delta и phi, а вот с 4-х мерной я уже месяц бьюсь и ничего не получается, может для 4-х мерной приведёте пример.

Добавлено через 3 минуты
Не могу понять что Ok, в файле структура находятся не deltarm, phirm,alpharm,Mrm, а Mt,alphat,deltat,phit.
0
 Аватар для faraonCar
164 / 144 / 49
Регистрация: 29.10.2014
Сообщений: 738
08.06.2018, 19:29
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
clc
clear
x1 = 1:100;
x2 = (1:50)';
x3 = 1:30;
V = gallery('uniformdata',100,50,30,0);
 
xq1 = [0 0 0];
xq2 = [0 0 51];
xq3 = [0 101 102];
 
vq = interpn(x1,x2,x3,V,xq1,xq2,xq3,'linear',-1)
V - должен иметь размер 100-на-50-на-30
0
1 / 3 / 0
Регистрация: 25.04.2015
Сообщений: 474
08.06.2018, 19:35  [ТС]
Ну так у меня 19x13x5x8
0
 Аватар для faraonCar
164 / 144 / 49
Регистрация: 29.10.2014
Сообщений: 738
08.06.2018, 19:37
Matlab M
1
Cxrm = interpn(deltat,phit,Cxt, deltarm, phirm,'linear');
0
1 / 3 / 0
Регистрация: 25.04.2015
Сообщений: 474
08.06.2018, 19:40  [ТС]
Ничего не понял я же писал
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
clc; clear all; clf;
 
rm = importdata('Эксперимент.txt');
Mrm = rm.data (:,1);
alpharm = rm.data (:,2);
deltarm = rm.data (:,3);
phirm = rm.data (:,4);
 
X=importdata('Массивы.txt');
Mt = X(:,1); % t-значит табличное
alphat = X(:,2);
deltat = X(:,3);
phit = X(:,4);
Cxt = X(:,5);
 
[Mt] = unique(Mt);
[alphat] = unique(alphat);
Ml = length(Mt);
alphal = length(alphat);
 
s=0;
n=0;
a =NaN(1);
M =NaN(1);
 
for i=1:size (X,1)/247
   x{i}=X(247*(i-1)+1:247*i,:);
   
   Mt = x{i}(:,1); % t-значит табличное
   alphat = x{i}(:,2);
   deltat = x{i}(:,3);
   phit = x{i}(:,4);
   Cxt = x{i}(:,5);
   
   [Mt] = unique(Mt);
   [alphat] = unique(alphat);
   [deltat] = unique(deltat);
   [phit] = unique(phit);
   [Cxt] = reshape(Cxt,length(unique(deltat)),[]);
  
   if ([a]~=[alphat])&(s <= alphal)
    s= s+1
    [a]=[alphat]
   end;
   
   if  s > alphal
    s=1
   end;
    
   if ([M]~=[Mt])&(n <= Ml) 
    n= n+1
    [M]=[Mt]
   end;
   
   if  n > Ml 
    n=1     
   end;
   
   Cx(:, :, s, n) = [Cxt];
   
end
 
Cxrm = interpn(deltat,phit,alphat,Mt,Cx, deltarm, phirm,alpharm,Mrm, 'linear');
0
 Аватар для faraonCar
164 / 144 / 49
Регистрация: 29.10.2014
Сообщений: 738
08.06.2018, 19:43
Цитата Сообщение от GAZot Посмотреть сообщение
19x13x5x8
У Вас 19x13x1x1

Добавлено через 52 секунды
Поставьте эту интерполяцию и посмотрите что выходит
Цитата Сообщение от faraonCar Посмотреть сообщение
Matlab M
1
Cxrm = interpn(deltat,phit,Cxt, deltarm, phirm,'linear');
Добавлено через 23 секунды
Вместо Вашей формулы
0
1 / 3 / 0
Регистрация: 25.04.2015
Сообщений: 474
08.06.2018, 19:46  [ТС]
Такое ощущение, что мы о разных кода говорим.

Добавлено через 1 минуту
Cxrm = interpn(deltat,phit,Cxt, deltarm, phirm,'linear'); а куда я дену M и alfa
0
 Аватар для faraonCar
164 / 144 / 49
Регистрация: 29.10.2014
Сообщений: 738
08.06.2018, 19:47
У Вас alphat,Mt имеет одно значение, как Вы собрались интерполировать по одному значению?
0
1 / 3 / 0
Регистрация: 25.04.2015
Сообщений: 474
08.06.2018, 19:54  [ТС]
Смотри у меня сорок таблиц, в которых по одному значению alphat,Mt, в каждой таблице я найду
Cxrm = interpn(deltat,phit,Cxt, deltarm, phirm,'linear'); оно считает я проверял, у меня 4-х мерный массив превратиться в 3-х мерный. Что мне делать дальше?
0
 Аватар для faraonCar
164 / 144 / 49
Регистрация: 29.10.2014
Сообщений: 738
08.06.2018, 20:01
Цитата Сообщение от GAZot Посмотреть сообщение
Что мне делать дальше?
Делайте то, что Вам нужно с ними.
0
1 / 3 / 0
Регистрация: 25.04.2015
Сообщений: 474
08.06.2018, 20:05  [ТС]
Мне нужно дальше синтерполировать по M и alfa
0
 Аватар для faraonCar
164 / 144 / 49
Регистрация: 29.10.2014
Сообщений: 738
08.06.2018, 20:34
Ну интерполируйте, у Вас по 40 значений М и алфа с соответствующими значениями сх.
0
1 / 3 / 0
Регистрация: 25.04.2015
Сообщений: 474
08.06.2018, 20:47  [ТС]
Я не знаю как

Добавлено через 7 минут
Дело в том, что у меня 70 значений лётных значений, если мы отбрасываем M и alfa то в каждой таблице будет 70 значений Cx и после 2-х мерной интерполяции останется 40x70=2800 значений
0
 Аватар для Krasme
7960 / 5121 / 2162
Регистрация: 02.02.2014
Сообщений: 13,496
08.06.2018, 22:33
давненько эта задача у вас висит
Как использовать функцию многомерной интерполяции - interpn
Цитата Сообщение от GAZot Посмотреть сообщение
для удобства работы с ним я перегнал в текстовый файл «Таблица.txt»
хотелось бы оригинал данных посмотреть, не структуру..

Добавлено через 13 минут
пока есть такой вариант
Кликните здесь для просмотра всего текста
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
clc; clear all;
rm = importdata('Эксперимент.txt');
Mrm = rm.data (:,1);
alpharm = rm.data (:,2);
deltarm = rm.data (:,3);
phirm = rm.data (:,4);
 
x = importdata('Массивы.txt');
Mt = x (:,1); % t-значит табличное
alphat = x (:,2);
deltat = x (:,3);
phit = x (:,4);
 
[mt,at,dt,pt] = ndgrid(unique(Mt),unique(alphat),...
    unique(deltat),unique(phit));
 
mCxt = x (:,5);
Cxt=reshape(mCxt,8,5,19,13);
 
for i=1:length(Mrm)
    if ~isnan(phirm(i))
        Cxrm = interpn(mt,      at,      dt,    pt, Cxt, ...
            Mrm(i), alpharm(i), deltarm(i), phirm(i),'linear');
        disp([Mrm(i) alpharm(i) deltarm(i) phirm(i) Cxrm])
    end
end


лень колупаться в ваших табличных данных, смотрите сами, решение соответствует им или нет
0
1 / 3 / 0
Регистрация: 25.04.2015
Сообщений: 474
09.06.2018, 11:34  [ТС]
Krasme спасибо большое, наконец то я разобрался. Правда в моём случае это выглядит так:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[dt,pt,at,mt] = ndgrid(unique(deltat),unique(phit),...
    unique(alphat),unique(Mt));
 
mCxt = x (:,5);
Cxt=reshape(mCxt,19,13,5,8);
 
for i=1:length(Mrm)
    if ~isnan(phirm(i))
        Cxrm(i,:) = interpn(dt,      pt,      at,    mt, Cxt, ...
           deltarm(i), phirm(i), alpharm(i), Mrm(i),'linear');
        disp([Mrm(i) alpharm(i) deltarm(i) phirm(i) Cxrm(i)])
    end
end
 
fid = fopen('res.txt', 'w');
if fid == -1
    error('File is not opened');
end
fprintf(fid, 'Mrm      alpharm deltarm phirm Cxrm\r\n');
fprintf(fid, '%.5f %.5f %.5f %.5f %.7f\r\n', [Mrm alpharm deltarm phirm Cxrm]');
fclose(fid);
0
 Аватар для Krasme
7960 / 5121 / 2162
Регистрация: 02.02.2014
Сообщений: 13,496
09.06.2018, 11:51
зачем отдельно массив тогда создавать, если все равно отправляете в файл..
записывайте прямо в цикле..
1. открыть файл
2. в цикле интерполяция и запись результата в файл
3. закрыть файл
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.06.2018, 11:51

Квадратная n-мерная матрица
Дана n-мерная квадратная матрица.Вычислить сумму элементов,находящихся в каждой из четвертей матрицы. Т.е. матрица разделена таким...

2х мерная БД из txt в Access
Друзья, давно не работал в Access, туплю уже 2й час. Задача такая: Есть файл txt с данными клиентов, разделители &quot;;&quot;, в файле:...

2-ух мерная массив(матрица) и строки
мне осталось 2 дня для сдачи отчета, у меня 2 задачи (малость ********) 1 задача:(2-ух мерный массив) Дана (построчно) вещественная...

Интерполяция заданной функции второй формулой Ньютона (обратная интерполяция)
Программа накапливает ошибку, да и первые значения совсем уже &quot;приближённые&quot;. Явно что-то упустил. Посмотрите со стороны. #include...

Интерполяция полиномом Лагранжа и кусочная интерполяция
столкнулась с такой проблемой: написала интерполяцию Лагранжа x=; y=2*cos(x); function =inter(a,x,y) n=length(x); p=0; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru