MATLAB | R2024a更新了哪些好玩的东西?

news/2024/5/9 14:51:58/文章来源:https://blog.csdn.net/slandarer/article/details/136925147

Hey 好久不见,大家一看三月中下旬这个时间节点也应该能猜到这篇更新什么内容,没错MATLAB R2024a正式版发布啦啦拉拉,直接来看看有啥我认为比较有意思的更新点吧:

1 极坐标表达式绘制

将会使用使用fpolarplot函数来替换ezpolar

f = @(t) 1 + cos(t);
fpolarplot(f)
% fpolarplot(f,LineWidth=2)


2 极坐标填充区域

使用thetaregionradiusregionpolarregion函数。填充区域用于高亮显示绘图:

f = @(t) 1 + cos(t);
fpolarplot(f,LineWidth=2)% 极坐标半径填充
radiusregion([0.5,1],'FaceColor','b')% 极坐标角度填充
thetaregion([pi/6,pi/3]+pi,'FaceColor','g')% 极坐标区域填充
thetas = [0 pi/2];
radii = [1.5 2];
polarregion(thetas,radii,'FaceColor','r')


3 线条样式

可以使用linestyleorder函数设置线条样式的出现规律:

Y = (10:15)'-(0:5);
tiledlayout(2,1)
ax1 = nexttile;
plot(ax1,Y,LineWidth=1)
ax2 = nexttile;
plot(ax2,Y,LineWidth=1)% 设置坐标区域1线条样式
linestyles1 = ["-","--","-o"];
linestyleorder(ax1, linestyles1)
% 设置坐标区域2线条样式
linestyles2 = ["-s","-.","->"];
linestyleorder(ax2, linestyles2)


4 RGB和16进制颜色转换

rgb2hexhex2rgb

RGB = [0.60 0.30 0.80];
rgb2hex(RGB)
% ans = 
% "#994DCC"hexStr = "#CD00EF";
hex2rgb(hexStr)
% ans = 1×3
%    0.8039         0    0.9373

当然我很久很久以前写过类似的东西:

function string=ten2sixteen(num)
%the num should be a 1x3 Integer mat limited in [0 255]
exchange_list={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
string='#';
for i=1:3temp_num=num(i);string(1+i*2-1)=exchange_list{(temp_num-mod(temp_num,16))/16+1};string(1+i*2)=exchange_list{mod(temp_num,16)+1};
end
end% ten2sixteen([20,30,255])
% ans =
%    '#141EFF'function num=sixteen2ten(string)exchange_list='0123456789ABCDEF#';num=zeros(1,3);for i=1:3tempCoe1=find(exchange_list==string(i*2))-1;tempCoe2=find(exchange_list==string(i*2+1))-1;num(i)=16*tempCoe1+tempCoe2;end
end% sixteen2ten('#26FF06')
% ans =
%     38   255     6

5 图例及矩形透明度

您可以控制图例框和矩形的透明度:

  • 通过设置BackgroundAlpha的属性,将图例对象透明度设置为介于0(完全透明)和 1(不透明)
  • 通过设置FaceAlpha的属性,将矩形对象透明度设置为介于0和1 .

说来有趣,之前参加迷你黑客大赛后,官方Graphics Team询问有没有想要分享的技巧:

我就分享了关于实现圆角半透明图例的知乎文章:

  • https://zhuanlan.zhihu.com/p/642487014

然后比较巧的是,官方团队正好也打算在R2024a版本发布这个功能,属于正巧撞上了:

X=1:2;
Y=(1:2)+(1:6)';
plot(X,Y,'LineWidth',8);legend('BackgroundAlpha',.5)

展示一下我之前写的功能函数和效果:

function SPrettyLegend(lgd)
% Semitransparent rounded rectangle legend
% Copyright (c) 2023, Zhaoxu Liu / slandarer
% -------------------------------------------------------------------------
% Zhaoxu Liu / slandarer (2023). pretty legend 
% (https://www.mathworks.com/matlabcentral/fileexchange/132128-pretty-legend), 
% MATLAB Central File Exchange. 检索来源 2023/7/9.
% =========================================================================
if nargin<1ax = gca;lgd = get(ax,'Legend');
end
pause(1e-6)
Ratio = .1;
t1 = linspace(0,pi/2,4); t1 = t1([1,2,2,3,3,4]);
t2 = linspace(pi/2,pi,4); t2 = t2([1,2,2,3,3,4]);
t3 = linspace(pi,3*pi/2,4); t3 = t3([1,2,2,3,3,4]);
t4 = linspace(3*pi/2,2*pi,4); t4 = t4([1,2,2,3,3,4]);
XX = [1,1,1-Ratio+cos(t1).*Ratio,1-Ratio,Ratio,Ratio+cos(t2).*Ratio,...0,0,Ratio+cos(t3).*Ratio,Ratio,1-Ratio,1-Ratio+cos(t4).*Ratio];
YY = [Ratio,1-Ratio,1-Ratio+sin(t1).*Ratio,1,1,1-Ratio+sin(t2).*Ratio,...1-Ratio,Ratio,Ratio+sin(t3).*Ratio,0,0,Ratio+sin(t4).*Ratio];
% 圆角边框(border-radius)
oriBoxEdgeHdl = lgd.BoxEdge;
newBoxEdgeHdl = matlab.graphics.primitive.world.LineStrip();
newBoxEdgeHdl.AlignVertexCenters = 'off';
newBoxEdgeHdl.Layer = 'front';
newBoxEdgeHdl.ColorBinding = 'object';
newBoxEdgeHdl.LineWidth = 1;
newBoxEdgeHdl.LineJoin = 'miter';
newBoxEdgeHdl.WideLineRenderingHint = 'software';
newBoxEdgeHdl.ColorData = uint8([38;38;38;0]);
newBoxEdgeHdl.VertexData = single([XX;YY;XX.*0]);
newBoxEdgeHdl.Parent=oriBoxEdgeHdl.Parent;
oriBoxEdgeHdl.Visible='off';
% 半透明圆角背景(Semitransparent rounded background)
oriBoxFaceHdl = lgd.BoxFace;
newBoxFaceHdl = matlab.graphics.primitive.world.TriangleStrip();
Ind = [1:(length(XX)-1);ones(1,length(XX)-1).*(length(XX)+1);2:length(XX)];
Ind = Ind(:).';
newBoxFaceHdl.PickableParts = 'all';
newBoxFaceHdl.Layer = 'back';
newBoxFaceHdl.ColorBinding = 'object';
newBoxFaceHdl.ColorType = 'truecoloralpha';
newBoxFaceHdl.ColorData = uint8(255*[1;1;1;.6]);
newBoxFaceHdl.VertexData = single([XX,.5;YY,.5;XX.*0,0]);
newBoxFaceHdl.VertexIndices = uint32(Ind);
newBoxFaceHdl.Parent = oriBoxFaceHdl.Parent;
oriBoxFaceHdl.Visible = 'off';
end

使用效果

clc; clear; close all
rng(12)
% 生成随机点(Generate random points)
mu = [2 3; 6 7; 8 9];
S  = cat(3,[1 0; 0 2],[1 0; 0 2],[1 0; 0 1]);
r1 = abs(mvnrnd(mu(1,:),S(:,:,1),100));
r2 = abs(mvnrnd(mu(2,:),S(:,:,2),100));
r3 = abs(mvnrnd(mu(3,:),S(:,:,3),100));
% 绘制散点图(Draw scatter chart)
hold on
propCell = {'LineWidth',1.2,'MarkerEdgeColor',[.3,.3,.3],'SizeData',60};
scatter(r1(:,1),r1(:,2),'filled','CData',[0.40 0.76 0.60],propCell{:});
scatter(r2(:,1),r2(:,2),'filled','CData',[0.99 0.55 0.38],propCell{:});
scatter(r3(:,1),r3(:,2),'filled','CData',[0.55 0.63 0.80],propCell{:});
% 增添图例(Draw legend)
lgd = legend('scatter1','scatter2','scatter3');
lgd.Location = 'northwest';
lgd.FontSize = 14;
% 坐标区域基础修饰(Axes basic decoration)
ax=gca; grid on
ax.FontName   = 'Cambria';
ax.Color      = [0.9,0.9,0.9];
ax.Box        = 'off';
ax.TickDir    = 'out';
ax.GridColor  = [1 1 1];
ax.GridAlpha  = 1;
ax.LineWidth  = 1;
ax.XColor     = [0.2,0.2,0.2];
ax.YColor     = [0.2,0.2,0.2];
ax.TickLength = [0.015 0.025];
% 隐藏轴线(Hide XY-Ruler)
pause(1e-6)
ax.XRuler.Axle.LineStyle = 'none';
ax.YRuler.Axle.LineStyle = 'none';SPrettyLegend(lgd)


6 常量线和常值区域层级

可以调节常量线(使用xline或者yline创造的对象),以及常值区域(使用xregion和yregion创建的对象)的层次(位于顶层还是底层):

plot([-5,5],[0,5],'LineWidth',5)
xr = xregion([-2 1],[-1 2],'FaceAlpha',1);
xr(1).Layer = "top";


7 柱状图组间距

设置GroupWidth属性设置柱状图组间距:

y = [2 2 3; 2 5 6; 2 8 9; 2 11 12];subplot(3,1,1)
bar(y,'GroupWidth',.2)
title('GroupWidth=0.2')subplot(3,1,2)
bar(y,'GroupWidth',.6)
title('GroupWidth=0.6')subplot(3,1,3)
bar(y,'GroupWidth',1)
title('GroupWidth=1')


8 甜甜圈图标签格式

有六种甜甜圈图标签格式,同时可以设置中心标签:

Bakers = ["Betty","Abby","Afiq","Ravi","Dave"];
Sales = [20 51.55 49.37 20.35 48.25];
subplot(1,2,1)
donutchart(Sales,Bakers,'LabelStyle','namepercent','CenterLabel','Slandarer');subplot(1,2,2)
donutchart(Sales,Bakers,'LabelStyle','namedata');


9 图像导出函数升级

在调用exportgraphics函数时

使用以下名称值参数控制图像导出:

  • Width,Height-指定输出的宽度和高度。
  • Padding-指定图形周长周围的填充量。
  • Units-指定宽度、高度和填充值的单位。
  • PreserveAspectRatio-指定是否自动添加填充以保留原始纵横比,如果宽度和高度值与图形的原始纵横比冲突。

详情请见:

  • https://www.mathworks.com/help/releases/R2024a/matlab/ref/exportgraphics.html

10 颜色选择器置于App窗口上

fig = uifigure;
c = uicolorpicker(fig);


11 App单选按钮HTML及tex

设置Interpreter属性,比如显示公式:

fig = uifigure('Position',[680 678 398 271]);
bg = uibuttongroup(fig,'Position',[137 113 123 85]);  rb1 = uiradiobutton(bg,'Position',[10 60 91 15],'Interpreter','tex');
rb2 = uiradiobutton(bg,'Position',[10 38 91 15],'Interpreter','tex');rb1.Text = 'sin(\pi)';
rb2.Text = 'x^2';


12 具有下拉表的表格

fig = uifigure;
cnames = categorical({'Blue';'Red'},{'Blue','Red'});
w = [400; 700];
tdata = table(cnames,w,'VariableNames',{'Color','Wavelength'});
uit = uitable(fig,'Data',tdata,'ColumnEditable',true);


13 在脚本和实时脚本中的任意位置定义函数

以前函数只能定义在脚本末尾,现在可以定义在任意位置了:


14 初始矩阵创建

使用createArray函数几乎可以创建任意类型的矩阵,比如:

p = uint8(7 + 3i)
% p = uint8
%    7 +   3i
X = createArray(3,Like=p)
% X = 3×3 uint8 矩阵
%    0 +   0i   0 +   0i   0 +   0i
%    0 +   0i   0 +   0i   0 +   0i
%    0 +   0i   0 +   0i   0 +   0iP = createArray(3,FillValue=single(pi))
% P = 3x3 single matrix
%     3.1416    3.1416    3.1416
%     3.1416    3.1416    3.1416
%     3.1416    3.1416    3.1416

这个函数的使用方式比较复杂,详情请见:

  • https://www.mathworks.com/help/releases/R2024a/matlab/ref/createarray.html

15 局部最值获取

通过islocalmin2islocalmax2获取局部最值,例如:

A = -peaks;
contour(A,'LineWidth',2)
colorbar% 获取最小值位置
TF = islocalmin2(A);
minval = A(TF);
[X,Y] = meshgrid(1:49,1:49);
hold on
plot3(X(TF),Y(TF),minval,"red.",MarkerSize=22)



16 实时编辑器运行python代码


这期的更新远远不止上面提到的那些,还有很多更新,但是篇幅有限,这里便不再一一提及,其他更新比如数学方面更新了求解N维数组的伪逆以及线性方程组的最小范数最小二乘解,ui控件比如App designer可以和simulink交互了,此外还有无数的效率提高,比如读取大型JPEG图像比上一版本快1.5倍,生成一个大JPEG图像比上一版本快1.6倍,提高了各种数据格式解析的能力。

除了MATLAB本体外,主要对以下六个工具箱进行了更新,请自行查看:

  • Computer Vision Toolbox
  • Deep Learning Toolbox
  • GPU Coder
  • Instrument Control Toolbox
  • Satellite Communications Toolbox
  • UAV Toolbox

更多更新内容请见:

  • https://www.mathworks.com/products/new_products/latest_features.html
  • https://www.mathworks.com/help/releases/R2024a/matlab/release-notes.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_1023493.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【创建QT项目】使用向导创建

打开Qt Creator 界面选择 New Project或者选择菜单栏 【文件】-【新建文件或项目】菜单项 弹出New Project对话框&#xff0c;选择Qt Widgets Application&#xff0c; 选择【Choose】按钮&#xff0c;弹出如下对话框 设置项目名称和路径&#xff0c;按照向导进行下一步&#x…

JVM—内存可见性

什么是可见性 可见性&#xff1a;一个线程对共享变量值的修改,能够及时地被其他线程看到共享变量&#xff1a;如果一个变量在多个线程的工作内存中都存在副本,那么这个变量就是这几个线程的共享变量 Java内存模型(JMM) Java内存模型(Java Memory Model)描述了Java程序中各种…

【工具使用】VScode如何设置中文环境

操作步骤 1.1 安装中文插件 1.2 设置为中文&#xff0c;然后重启 按照插件的使用方法介绍设置中文&#xff1a; 按下“CtrlShiftP”组合键以显示“命令面板”&#xff1a; 输入“dispaly”&#xff0c;选择“Configure Display Language”&#xff1a; 选择“中文简体” …

景泓达智能科技邀您参观2024第七届燕窝及天然滋补品博览会

2024第七届世界燕窝及天然滋补品博览会 2024年8月7-9日 | 上海新国际博览中心 同期举办&#xff1a;第三届世界滋补产业生态大会暨交流晚宴/颁奖典礼 2024第九届酵素、益生产品博览会 2024上海国际月子健康博览会 2024上海燕博会经历了7年的发展与资源积累&#xff0c;已成…

Linux编程6.1 线程及并发控制-线程与进程

1、概述 线程与进程非常像&#xff1a;进程线程*n(n>1)资源 线程&#xff1a;执行单元->运行 就绪 阻塞 线程状态 多线程&#xff0c;一个进程中&#xff0c;有多个线程在运行->虚拟内存不是镜像&#xff0c;而是共享 2、线程 2.1线程分类 1)、线程按照其调用者可…

JavaParser 手动安装和配置

目录 前言 一、安装 Maven 工具 1.1 Maven 软件的下载 1.2 Maven 软件的安装 1.3 Maven 环境变量配置 1.4 通过命令检查 Maven 版本 二、配置 Maven 仓库 2.1 修改仓库目录 2.2 添加国内镜像 三、从 Github 下载 JavaParser 3.1 下载并解压 JavaParser 3.2 从路径打…

SpringBoot+Vue前后端分离项目在Linux系统中基于Docker打包发布,并上传镜像到阿里镜像私仓

文章目录 SpringBootVue前后端分离项目在Linux系统中基于Docker打包发布&#xff0c;并上传镜像到阿里镜像私仓一、Java项目基于Docker打包发布1.打包应用&#xff0c;将打好的jar包放到我们的linux系统中2.新建dockerfile3.打包镜像4.测试运行5.上传镜像到阿里云免费私仓 二、…

每日一题 --- 数组中的第 K 个最大元素[力扣][Go]

数组中的第 K 个最大元素 题目&#xff1a;数组中的第 K 个最大元素 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1…

数据挖掘终篇!一文学习模型融合!从加权融合到stacking, boosting

模型融合&#xff1a;通过融合多个不同的模型&#xff0c;可能提升机器学习的性能。这一方法在各种机器学习比赛中广泛应用&#xff0c; 也是在比赛的攻坚时刻冲刺Top的关键。而融合模型往往又可以从模型结果&#xff0c;模型自身&#xff0c;样本集等不同的角度进行融合。 数据…

【理解机器学习算法】之Clustering算法(Agglomerative Clustering)

聚合聚类(Agglomerative Clustering)是一种层次聚类算法&#xff0c;通过逐步合并或“聚集”它们来构建嵌套聚类。这种方法采用自底向上的方式构建聚类层次&#xff1a;它从将每个数据点作为单个聚类开始&#xff0c;然后迭代合并最接近的聚类对&#xff0c;直到所有数据点合并…

基于tcp协议的网络通信(将服务端守护进程化)

目录 守护进程化 引入 介绍 如何实现 思路 接口 -- setsid 注意点 实现代码 daemon.hpp log.hpp 运行情况 前情提要 -- 前后台任务介绍(区别命令),sessionsid介绍,session退出后的情况(nuhup,终端进程控制组),任务进程组概念,任务与进程组的关系,-bash介绍-CSDN博客…

基于SSM框架的酒店预订系统

基于SSM框架的酒店预订系统的设计与实现 摘要 当今世界的互联网信息技术飞速发展&#xff0c;网络化的工作模式已经几乎覆盖到各个工作领域中的业务内&#xff0c;人们的日常生活也渐渐离不开互联网。因此&#xff0c;在当下全国各处的酒店都开始构建起了自己的网络预订系统。…

vue的优缺点有那些 组件常用的有那些?

优点&#xff1a; 组件化开发&#xff0c;提升效率&#xff0c;方便复用&#xff0c;便于协同开发单页面路由易于结合其他的第三方库丰富的api方法轻量高效,虚拟DOMMVVM&#xff0c;数据驱动视图轻量级的框架 缺点&#xff1a; 缺少高阶教程和文档生态环境不如angular和re…

【PHP + 代码审计】数组基础

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收…

OpenHarmony系统服务的核心组件

简介 samgr组件是OpenHarmony的核心组件&#xff0c;提供OpenHarmony系统服务启动、注册、查询等功能。 系统架构 图 1 系统服务管理系统架构图 目录 /foundation/distributedschedule ├── samgr │ ├── bundle.json # 部件描述及编译文件 │ ├── frameworks…

Git的配置与简单的使用

Git概述 Git的工作流程 Git的配置与简单的使用 配置用户信息 配置用户名以及邮箱 邮箱尽量自己能够记住&#xff0c;以后会用到 git config --global user.name "Your name" git config --global user.email "Your email"查看用户信息 git config --…

警务数据仓库的实现

目录 一、SQL Server 2008 R2&#xff08;一&#xff09;SQL Server 的服务功能&#xff08;二&#xff09;SQL Server Management Studio&#xff08;三&#xff09;Microsoft Visual Studio 二、创建集成服务项目三、配置“旅馆_ETL”数据流任务四、配置“人员_ETL”数据流任…

ORA-29548

ORA-29548: Java system class reported: release of Java system classes in the database ( being determined) does not match that of the oracle executable (11.2.0.4.221018) 执行 java 报错 create or replace and compile java source named preg_replace aspackage…

深入解析MySQL的四种打开方式

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

嵌入式开发--STM32G431RBTx-定时器中断流水灯

嵌入式开发–STM32G431RBTx-定时器中断流水灯 定时器工作原理 如图有反映stm32g431的定时器资源。 共10个定时器 定时器定时器类型个数TIM6&#xff0c;7基本定时器2TIM2&#xff0c;3&#xff0c;4全功能通用定时器3TIM15&#xff0c;16&#xff0c;17通用定时器(只有1或2个…