matlab保存ode45计算中间值并绘图
假如要用ode45数值积分求解以下方程:
y ′ ′ = A B t y y^{''}=\frac{A}{B}ty y′′=BAty
将其降阶得到
y 1 ′ = y 2 y 2 ′ = A B t y 1 y^{'}_1=y_2\\ y_2^{'}=\frac{A}{B}ty_1 y1′=y2y2′=BAty1
然后我们希望保存计算的中间值 y 1 ′ y_1^{'} y1′并绘图,可以这样做:
odefunc.m
function [dydt] = odefunc(t,y,A,B)
%% 要积分的微分方程
dydt = zeros(2,1);
dydt(1) = y(2);
dydt(2) = (A/B)*t.*y(1);%% 从工作区读取record_dy1数组
record_dy1=evalin('base', 'record_dy1');
record_dy1=[record_dy1 y(2)];
%保存record数组到工作区
assignin('base','record_dy1',record_dy1);%% 从工作区读取积分时间数组
time=evalin('base', 'time');
%一定要round,消除变步长重复值
time=[time round(t,4)];
assignin('base','time',time);
end
ode45_extend.m
%% 微分方程
A = 1;
B = 2;
tspan = [0 5];
%被积函数dy_1,dy_2初值
y0 = [0 0.01];
%% record_dy1是用来保存要记录的中间值
record_dy1=[];
%time是对应的时间点
time=[];
[t,y] = ode45(@(t,y) odefunc(t,y,A,B), tspan, y0);
%plot(t,y(:,1),'-o',t,y(:,2),'-.')
%% 去除变步长带来的重复值
[B, I] = unique(time, 'first');
%重复值所在索引
duplicated_location=setdiff(1:numel(time), I);
%删除重复值
time(duplicated_location)=[];
record_dy1(duplicated_location)=[];
%% 绘图
plot(time,record_dy1);
运行ode45_extend.m
得到结果:
matlab保存ode45计算中间值并绘图相关推荐
- matlab保存符合条件的值到一个新的向量
之前用MATLAB做数值计算,没用到过保存符合条件数据的功能,MATLAB已经不常用了.前几天,做一个小实验要保存一下中间程序产生的数据,尝试了半天,没想到简单的方法,后来百度发现了一个小技巧,现记录 ...
- matlab 保存为矢量图,将绘图保存为图像或向量图形文件
将绘图保存为图像或向量图形文件 您可以使用坐标区工具栏中的导出按钮 ,或通过调用 exportgraphics 函数,将绘图另存为图像,或另存为向量图形文件.在决定要使用的内容类型时,应考虑要将文件放 ...
- 中南大学 科学计算与MATLAB语言 11矩阵求值
中南大学 科学计算与MATLAB语言 11矩阵求值 矩阵求值主要包括 矩阵的行列式值 矩阵的秩 矩阵的迹 矩阵的范数 矩阵的条件数 把一个方阵看作一个行列式,并对其按行列式的规则求值,这个值就称方阵所 ...
- matlab 蒙特卡罗计算pi值
蒙特卡罗法计算pi值是比较基础的入门应用之一,网上流传的大部分代码包括百度百科上的代码都是使用for循环完成迭代的,运算速度非常慢,这里我们提供一个向量化运算的方式,以加快运算速度.接触编程久了后,会 ...
- Matlab 迭代法计算灰值图像的level
Matlab 迭代法计算灰值图像的level Matlab中,已知函数im2bw(X,Level),默认level为0.5.这里level为阈值,其含义是: 第Xij个像素,利用利用二值化处理时,le ...
- 【MATLAB】将计算结果循环保存至excel文件指定sheet
[MATLAB]将计算结果循环保存至excel文件指定sheet 文章目录 [MATLAB]将计算结果循环保存至excel文件指定sheet 1.问题 2. 过程 3. 解决结果 4. 总结 1.问题 ...
- MATLAB绘制ROC曲线并计算AUC值
最近需要比较不同CNN网络的分类效果,用到了Auc值,所以学习了下用MATLAB绘制ROC曲线并计算Auc值的代码,总结如下. 1. 子函数代码: % 计算AUC值,同时绘制ROC曲线 % 二值分类, ...
- matlab历史模拟法计算var,历史模拟法、蒙特卡罗模拟法计算VaR和ES值
一.知识点介绍 1.1 历史模拟法 我们在之前有用到Delta-Normal的GARCH和RiskMetrics方法来计算VaR和ES,假设的是残差满足正态分布,对残差进行二次相关序列的建模并拟合残差 ...
- matlab计算miou值,深度学习计算机视觉图像分割领域指标mIoU(平均交并比)计算代码与逐行解析...
import numpy as np import argparse import json from PIL import Image from os.path import join #设标签宽W ...
最新文章
- android之broadcast发送广播
- MyBatis:lazy loading
- 后端学习 - 计算机网络
- bzoj3224: Tyvj 1728 普通平衡树(打个splay暖暖手)
- runtimeerror怎么解决python_如何解决这个python错误? RuntimeError:字典在迭代期间改变了大小...
- 百度地图兴趣点抓取工具
- OpenCv——OpenCv2 Mat创建、复制、释放
- iOS企业ipa(299)证书制作、打包发布全流程
- blender摄像机怎么绕物体旋转
- 常用财务软件有哪些功能模块
- QQ留言代码,网页QQ留言
- Linux上启动mysql不成功
- Sql Server 常用系统存储过程大全
- 一人一本一年N手机,仿滴滴出行开发含700个功能网约车APP源码(二)
- windbg调试minidump
- c语言标准字库,用C语言自造1602中文字库
- 毕业四年的职场经历自述
- django 允许post请求
- 物盾安全汤晓冬:工业互联网企业如何应对高发的供应链安全风险?
- C++中的log10函数