Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
 Аватар для Norwall
177 / 143 / 50
Регистрация: 07.02.2014
Сообщений: 489

Интерполяция (MathCad to Matlab)

19.10.2015, 09:46. Показов 1946. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, Уважаемые форумчане!

Подскажите, пожалуйста, как данная запись (интерполяции) будет выглядеть в матлабе?

Кликните здесь для просмотра всего текста


Вот значения переменных:
Matlab M
1
2
3
t = -20:10:30;
p = [20.06,26.99,35.54,45.95,58.46,73.34];
p_s = p*9.81e04;
С Уважением,
Алексей
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.10.2015, 09:46
Ответы с готовыми решениями:

Линейная и кубическая интерполяция в matlab
Не могу уже второй день разобраться с лабой. Вот функция y=3sin(корень x)+0.35x-3.8 1 зад. Провести интерполяцию значений функции ...

Из mathcad в Matlab
Здравствуйте, ооочень нужна помощь, есть программка в маткаде с функцией rkadapt(), которая решает систему диффуравнений методом...

Из mathCAD в matlab
Здравствуйте! Есть вот такое выражение в маткаде: Пытаюсь сделать в матлабе, но не выходит: t = -20:10:30; r = ; r =...

8
 Аватар для nuHrBuH
483 / 427 / 205
Регистрация: 04.03.2011
Сообщений: 1,259
19.10.2015, 12:02
Лучший ответ Сообщение было отмечено Norwall как решение

Решение

Matlab M
1
2
3
4
5
6
7
8
9
10
t = -20:10:30;
p = [20.06,26.99,35.54,45.95,58.46,73.34];
p_s = p*9.81e04;
tx = linspace(min(t),max(t),100);
 
px = spline(t, p_s, tx);
plot(tx,px,'k', t, p_s, 'or')
 
% pp = spline(t, p_s);
% pp.coefs              % если надо коэффициенты
2
 Аватар для Norwall
177 / 143 / 50
Регистрация: 07.02.2014
Сообщений: 489
19.10.2015, 19:00  [ТС]
nuHrBuH, спасибо за помощь!
0
 Аватар для Norwall
177 / 143 / 50
Регистрация: 07.02.2014
Сообщений: 489
20.10.2015, 21:52  [ТС]
Добрый вечер!

Вот еще такой вопрос у меня возник. Как реализовать вот это?



Пробую так:

Matlab M
1
2
3
4
5
6
7
8
clc, clear all, close all
 
TTTj = 220:5:300; t4j = TTTj - 273.15;
lambda_x3 = 1e-03*[181,174,167,160,153,146,140,133,127,120,113,107,100,95,90,86,85];
 
tx = linspace(min(t4j),max(t4j),100);
p = @(tx)(polyfit(t4j, lambda_x3, 5));
lambdax2 = @(tx)(interp1(t4j,p,tx,'cubic'));
Получаю следующее:

Error using interp1 (line 131)
Values must be of type double or single.

Error in @(tx)(interp1(t4j,p,tx,'cubic'))


Есть идеи как это сделать?

С Уважением
0
 Аватар для nuHrBuH
483 / 427 / 205
Регистрация: 04.03.2011
Сообщений: 1,259
20.10.2015, 23:12
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
clc, clear 
 
TTTj = 220:5:300; t4j = TTTj - 273.15;
lambda_x3 = 1e-03*[181,174,167,160,153,146,140,133,127,120,113,107,100,95,90,86,85];
 
lambda1 = @(x) spline(t4j, lambda_x3, x);
        % Если функцию часто придется использовать 
        % то так цивилизованей, наверное
        % coefs = spline(t4j, lambda_x3);
        % lambda1 = @(x) ppval(coefs, x);
x = linspace(min(t4j), max(t4j), 100);
plot(t4j, lambda_x3, 'or', x, lambda1(x))
 
%% аппроксимация
ft = fittype('a*x^3 + b*x^2 + c*x + d');
lambda2 = fit(t4j', lambda_x3', ft);       % привередливый, столбиком ему подавай
hold on
plot(x, lambda2(x),'r');
1
Модератор
 Аватар для Centurio
1765 / 1610 / 541
Регистрация: 13.09.2015
Сообщений: 5,629
20.10.2015, 23:36
Лучший ответ Сообщение было отмечено Norwall как решение

Решение

Во-первых, у вас значения для t4 в Маткаде и в Матлабе не совпадают.
Во-вторых, меня удивляет, что здесь так любят в Матлабе использовать символьные вычисления.
Конкретно для вашего примера:
Matlab M
1
2
3
4
5
6
7
8
clc,clear
tt4=220:5:300;tt4(4)=[];
t4=[tt4 0]-273.15;
lmb_3=[181 174 167 160 153 146 140 133 127 120 113 107 100 95 90 86 85]*1e-3;
p=polyfit(t4,lmb_3,5);
tx=20:-10:-30;
format long
lmb_2=polyval(p,tx)'
1
 Аватар для Norwall
177 / 143 / 50
Регистрация: 07.02.2014
Сообщений: 489
21.10.2015, 11:45  [ТС]
Цитата Сообщение от nuHrBuH Посмотреть сообщение
Кликните здесь для просмотра всего текста
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
clc, clear 
TTTj = 220:5:300; t4j = TTTj - 273.15;
lambda_x3 = 1e-03*[181,174,167,160,153,146,140,133,127,120,113,107,100,95,90,86,85];
lambda1 = @(x) spline(t4j, lambda_x3, x);
* * * * % Если функцию часто придется использовать 
* * * * % то так цивилизованей, наверное
* * * * % coefs = spline(t4j, lambda_x3);
* * * * % lambda1 = @(x) ppval(coefs, x);
x = linspace(min(t4j), max(t4j), 100);
plot(t4j, lambda_x3, 'or', x, lambda1(x))
%% аппроксимация
ft = fittype('a*x^3 + b*x^2 + c*x + d');
lambda2 = fit(t4j', lambda_x3', ft); * * * % привередливый, столбиком ему подавай
hold on
plot(x, lambda2(x),'r');
Используя Ваш код, получаются следующие значения:
Matlab M
1
2
3
4
5
6
7
8
9
10
k = [20 10 0 -10 -20 -30]; 
m = lambda2(k);
disp(m)
 
   0.088305506348245
   0.097531242653600
   0.108798743656701
   0.121552797803144
   0.135238193538526
   0.149299719308442
А должно (судя по маткаду):
Matlab M
1
2
3
4
5
6
0.0914191442
0.1025648760
0.1158242066
0.1294536022
0.1424500314
0.1544474371
Хотя значения близки:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
mm = [0.0914191442 0.1025648760 0.1158242066 0.1294536022 0.1424500314 0.1544474371];
m./mm'
 
ans =
 
   0.965941074122564
   0.950922444872431
   0.939343742074802
   0.938968060673151
   0.949372858815202
   0.966670099071565
Если брать код Centurio, то получается следующее:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
k = [20 10 0 -10 -20 -30]; 
lmb_2=@(tx)polyval(p,tx)';
m = lmb_2(k)
disp(m)
 
   0.087361458437958
   0.096737229648936
   0.109199918933940
   0.122418272684967
   0.135593335460247
   0.148827823644631
И аналогично примеру, приведенному выше:
Matlab M
1
2
3
4
5
6
7
8
9
10
mm = [0.0914191442 0.1025648760 0.1158242066 0.1294536022 0.1424500314 0.1544474371];
m./mm'
ans =
 
   0.955614485373380
   0.943180876550137
   0.942807398725060
   0.945653659724638
   0.951865956978980
   0.963614718632527
Значения, вычисленные по коду Centurio в целом точнее.

А разница получается за счет того, что алгоритмы интерполяции у маткада и матлаба различные, так?
0
Модератор
 Аватар для Centurio
1765 / 1610 / 541
Регистрация: 13.09.2015
Сообщений: 5,629
21.10.2015, 20:21
Цитата Сообщение от Norwall Посмотреть сообщение
Если брать код Centurio, то получается следующее:
Если брать мой код, получается следующее:
0.091419144155130
0.102564876001178
0.115824206634277
0.129453602197065
0.142450031405584
0.154447437097141
что в точности соответствует результату в Маткаде.
Не надо брать половину своего кода и половину моего. Скопируйте полностью мой код.
Ещё раз обращаю ваше внимание, что у вас значения для t4 в Маткаде и в Матлабе не совпадают. Поэтому у вас и получаются разные результаты.
0
 Аватар для Norwall
177 / 143 / 50
Регистрация: 07.02.2014
Сообщений: 489
22.10.2015, 06:05  [ТС]
Centurio, да, извините, напутал. Данные совпадают. Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.10.2015, 06:05
Помогаю со студенческими работами здесь

Из MathCad в MatLab
Здравствуйте! Пытаюсь функцию MathCad переделать в Matlab,но что-то не выходит. Не могли бы Вы подсказать,что не так? function D =...

Портирование из Mathcad в Matlab
Ребят, кто-нибудь может, пожалуйста, конвертировать программу(во вложении) в матлаб из маткада?

Решение задачи из Mathcad в Matlab
Данную задачу в Mathcad я решил, а вот в Matlab - не знаю как решать, так как для меня это новая среда. На первом скрине - постановка самой...

Импорт данных из Mathcad в Matlab
Здравствуйте. Помогите разобраться. Из Mathcad экспортированы данные в формате для Matlab. В Matlab загрузив файл в рабочую область...

Дифференциальные уравнения в matlab и mathcad
Напишите пожалуйста решение дифференциального уравнения различными методами доступными MathCAD, MatLab: x''+2x'-8x=0, x(0)=1, x'(0)=1 и...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru