MATLAB自定义函数并绘制

简介: MATLAB自定义函数并绘制

MATLAB在学习生活中应用非常广,简单总结一点MATLAB的使用小技巧,在脚本中自定义函数表达式并进行绘制

主要包括:

  • 线性: f(x)=ax+b
  • 二次:f(x)=ax^2+bx+c
  • 高斯函数:

  • 广义高斯函数:

  • 对数正态函数:

代码实现的主要思路为:

  1. 使用了syms函数来定义变量
  2. 自定义函数表达式
  3. 定义自变量x的取值范围
  4. 使用subs函数把x的值代入自定义好的表达式中,求解出因变量的值
  5. 使用plot函数绘制自定义函数的曲线

绘制曲线图为:

线性函数和二次函数:

函数表达式为:fx1 = x + 5 以及 fx2 = x^2 + 1

高斯函数与广义高斯函数:

注意:alpha的取值决定了函数顶部的尖锐程度,当alpha<sqrt(2)时曲线很窄;alpha=sqrt(2)时为标准的高斯函数;alpha>sqrt(2)时,曲线的顶部变宽。

对数正态函数:

源代码如下(若格式乱了也可以通过:此链接下载相关文件):

%% xiaochen wang 2020/07/11
% plot function curve
% such as:
% linear:f(x)=ax+b
% quadratic:f(x)=ax^2+bx+c 
% gaussian function:f(x)=a*exp(-(x-μ)^2/2σ^2)
% generalized gaussian function:f(x)=a*exp(-|x-μ|^α^2/2σ^2)
% lognormal function:f(x)=a*exp(-(ln(x-s)-μ)^2/2σ^2)
clc;
clear all;
syms x fx1 fx2 fx3 fx4_1 fx4_2 fx5; % creating symbolic variables or function
a = 20; miu = 0; xigma = 1; % define the parameters of gaussian function, A,μ,σ
alpha = sqrt(4); % define the value of parameter α (generalized gaussian function)
s = 1; % define the value of parameter s (lognormal function)
fx1 = x + 5; % linear
fx2 = x^2 + 1; % quadratic
fx3 = a*exp(-(x-miu)^2/(2*xigma^2)); % gaussian
fx4_1 = a*exp(-abs(x-miu)^(alpha^2)/(2*xigma^2)); % generalized gaussian
alpha = sqrt(1); % modify the value of alpha
fx4_2 = a*exp(-abs(x-miu)^(alpha^2)/(2*xigma^2)); % generalized gaussian
fx5 = a*(1/(x*xigma*sqrt(2*pi)))*exp(-(log(x)-miu)^2/(2*xigma^2)); %1/x*xigma*sqrt(2*pi)
xx = -5:0.01:5; %variables x 
xx2 = 0.01:0.01:5; %variables x in lognormal function must greater than zero
ans1 = subs(fx1, x, xx);
ans2 = subs(fx2, x, xx);
ans3 = subs(fx3, x, xx);
ans4_1 = subs(fx4_1, x, xx);
ans4_2 = subs(fx4_2, x, xx);
ans5 = subs(fx5, x, xx2);
figure('Name', 'Linear_and_Quadratic');
plot(xx, ans1, 'r'); % plot linear function
hold on;
plot(xx, ans2, 'b'); % plot quadratic function
legend('Linear', 'Quadratic');
figure('Name', 'Gaussian_and_Generalized gaussian');
plot(xx, ans4_2, 'r'); % alpha = 1
hold on;
plot(xx, ans3, 'g'); % alpha = sqrt(2)
hold on;
plot(xx, ans4_1, 'b'); % alpha = 2
legend('alpha=1', 'alpha=suqt(2)', 'alpha=2')
figure('Name', 'Lognormal');
plot(xx2, ans5);
legend('Lognormal');
目录
相关文章
|
4月前
【MATLAB学习】—结构化与自定义函数(四)
【MATLAB学习】—结构化与自定义函数(四)
|
1月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
105 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
1月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
79 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
1月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
61 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
4月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)
|
4月前
|
算法 调度
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
|
4月前
|
Serverless
基于Logistic函数的负荷需求响应(matlab代码)
基于Logistic函数的负荷需求响应(matlab代码)
|
4月前
|
供应链 算法
基于分布式优化的多产消者非合作博弈能量共享(Matlab代码)
基于分布式优化的多产消者非合作博弈能量共享(Matlab代码)