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

R2023b来啦!!废话不多说看看新版本有啥有趣的玩意和好玩的特性叭!!依旧把绘图放最前面叭,有图的内容看的人多。。

1 调色板

MATLAB终于不只有一套配色了,诸君且看:

y = [3 5 7 9 11; 2 5 6 8 10; 4 6 8 10 12; 3 5 7 9 11];bar(y)C = orderedcolors("reef");
colororder(C)

2 环形饼状图(甜甜圈图)

我在今年一月的时候写过一小段代码来专门实现这个功能,大概是这样:

% circularPieDemo 
X=[1,2,1,4,5];
pieHdl=pie(X);
hold on
% 颜色列表,修改颜色和标签位置
colorList=[0.8858    0.8500    0.88800.6173    0.7311    0.78640.4041    0.5218    0.74400.3668    0.2640    0.64650.2589    0.0720    0.3397];
for i=2:2:length(pieHdl)pieHdl(i).Position=pieHdl(i).Position.*.57;pieHdl(i).Color=[1,1,1];pieHdl(i-1).FaceColor=colorList(i/2,:);
end
legend('AutoUpdate','off')
% 画个圆
t=linspace(0,2*pi,200);
fill(cos(t).*.5,sin(t).*.5,'w')

而现在这个功能官方已经有donutchart函数可以直接实现啦~

data = [1 2 3 4];
donutchart(data)


3 新配色(abyss)

一个名为abyss的蓝黑配色。

XData=rand(15,15);
XData=XData+XData.';
H=fspecial('average',3);
XData=imfilter(XData,H,'replicate');imagesc(XData)
colormap('abyss')
colorbar
hold onax=gca;
ax.DataAspectRatio=[1,1,1];
ax.LineWidth=1.2;
ax.XMinorTick='on';
ax.YMinorTick='on';
ax.ZMinorTick='on';
ax.GridLineStyle=':';


4 逆序图例

通过设置Direction属性改变图例方向:

X=1:2;
Y=(1:2)+(1:6)';subplot(1,2,1)
plot(X,Y,'LineWidth',8);
legend
title('normal','FontSize',14,'FontWeight','bold')subplot(1,2,2)
plot(X,Y,'LineWidth',8);
legend('Direction','reverse')
title('reverse','FontSize',14,'FontWeight','bold')


5 轴副标签

通过

  • xsecondarylabel
  • ysecondarylabel

这俩玩意设置

x = datetime(2020,5,1:8);
y = 100:100:800;
bar(x,y)
xsecondarylabel("slandarer");
ysecondarylabel("SLANDARER")

老版本我也讲过有设置办法:

x = linspace(0,100,1000);
y = 5 + 3*sin(x./2);
fill([x x(end)],[y y(1)],[0.40 0.76 0.60],'FaceAlpha',.2,...'LineWidth',1,'EdgeColor',[0.40 0.76 0.60])
% 坐标区域基础修饰
ax=gca; grid on;
ax.FontName  = 'Cambria';
ax.TickDir   = 'out';
ax.LineWidth = .8;
ax.Box       = 'off';% 显示次标签
ax=gca;
% X轴主次标签
xlabel('XXXX1111')
ax.XRuler.SecondaryLabel.String='XXXX2222';
ax.XRuler.SecondaryLabel.Visible='on';
% Y轴主次标签
ylabel('YYYY1111')
ax.YRuler.SecondaryLabel.String='YYYY2222';
ax.YRuler.SecondaryLabel.Visible='on';


6 柱状图更容易创建

创建的时候可以直接用字符串数组来作为X坐标:

bar(["Vanilla","Chocolate","Cherry","Almond"],[1 2 3 4])


7 阴影区域函数优化

可以通过输入矩阵更方便创建多个阴影区域:

x = 0:0.05:10;
y = sin(x.^2)./(x.^2);
plot(x,y)
X = [-Inf 4 7; 2 5 Inf];
xregion(X)


8 根据文本调整轴范围

随便画个图:

x = 0:0.1:10;
y = sin(x);
plot(x,y)

创建文本标签的时候设置AffectAutoLimits属性开启,如果文字被放在画布外面,就能自带调整画布范围来适应文字:

text(1.1,1.1,"Peak",AffectAutoLimits="on")


9 等高线图文本颜色

等高线图的文本颜色可以跟随等高线颜色变化啦:可以通过设置LabelColor属性来实现:

x = -2:0.2:2;
y = -2:0.2:3;
[X,Y] = meshgrid(x,y);
Z = X.*exp(-X.^2-Y.^2);
contour(X,Y,Z,'ShowText','on','LineWidth',1,'LabelColor','flat')

对于老版本我以前也给过一个改颜色的方法:

[X,Y,Z] = peaks;
[C,hContour] = contour(X,Y,Z, 'ShowText','on', 'LevelStep',1, 'LineWidth',1.5);updateContours(hContour);
% 因为标签位置是自动更新的属性,会刷新掉颜色,因此添加listener检测
addlistener(hContour, 'MarkedClean', @(h,e)updateContours(hContour));
function updateContours(hContour)drawnow  levels = hContour.LevelList;labels = hContour.TextPrims; % 获取标签基础对象  lines  = hContour.EdgePrims; % 获取边缘基础对象 for idx = 1 : numel(labels)labelValue = str2double(labels(idx).String);lineIdx = find(abs(levels-labelValue)<10*eps, 1);  % 找到对应层级labels(idx).ColorData = lines(lineIdx).ColorData;  % 修改标签颜色labels(idx).Font.Size = 11;enddrawnow
end


10 热图文本的latex支持

load patients
tbl = table(LastName,Age,Gender,SelfAssessedHealthStatus,...Smoker,Weight,Location);h = heatmap(tbl,'Smoker','SelfAssessedHealthStatus',...'ColorVariable','Age','Interpreter','latex');
title('$x^2+y^2$')


11 image函数以时间为横坐标

image函数可以以时间为横坐标了,感觉可以用来制作那种github同款日历热力图:

x = datetime(2020,1,[1 10]);
y = minutes([1 10]);
C = peaks(10);
imagesc(x,y,C)


12 横向集群图

只需要设置YJitter并交换x,y数据:

x1 = ones(1,500);
x2 = 2 * ones(1,500);
x = [x1 x2];
y1 = 2 * randn(1,500);
y2 = [randn(1,250) randn(1,250) + 4];
y = [y1 y2];
swarmchart(y,x,'filled','MarkerFaceAlpha',0.5,'MarkerEdgeAlpha',0.5,'YJitter','density')


13 APP 滑动条允许多个滑块

fig = uifigure;
sld = uislider(fig,"range",Value=[10 60]);


14 App框选控件被选中时返回值

其实App designer也更了挺多的,这里不详细展开,其中还有个比较有意思的就是这条,当下拉列表和框选列表某一项被选中时候,一般会返回被选中的玩意的字符串,比如返回个apple啥的不利于后期处理,而可使用ItemsData将每个选项对应到一个数值,就比较方便处理和识别:

fig = uifigure;
dd = uidropdown(fig, ...Items=["Apple","Banana","Cherry"], ...ItemsData=[0.5 0.2 1.3]);
idx = dd.ValueIndex;disp(dd.Items(idx) + ": " + dd.Value)
% Apple: 0.5

15 json数据读取

终于可以读取json数据啦,大概是这么读的:

 S = readstruct("myFile.json")

16 三个增添删减元素的函数

  • resize 根据输入数据的长度是否小于或大于目标长度来添加或删除元素。调整大小的数据与目标长度匹配。
  • paddata 只添加元素。如果输入数据的长度大于或等于目标长度,则输出数据与输入数据相同。
  • trimdata 只删除元素。如果输入数据的长度小于或等于目标长度,则输出数据与输入数据相同。

resize

  • https://ww2.mathworks.cn/help/matlab/ref/resize.html
A = [1,2,3];
B1 = resize(A,6)
B2 = resize(A,2)% B1 =
%      1     2     3     0     0     0
% B2 =
%      1     2

paddata

  • https://ww2.mathworks.cn/help/matlab/ref/paddata.html
A = [1,2,3];
B1 = paddata(A,6)
B2 = paddata(A,2)% B1 =
%      1     2     3     0     0     0
% B2 =
%      1     2     3

trimdata

  • https://ww2.mathworks.cn/help/matlab/ref/trimdata.html
A = [1,2,3];
B1 = trimdata(A,6)
B2 = trimdata(A,2)% B1 =
%      1     2     3
% B2 =
%      1     2

17 2维数据平滑

A = peaks;
rng(0,"twister")
A = A + 0.5*randn(size(A));
surf(A)B = smoothdata(A);
surf(B)

可选平滑方法:

[bins,edges] = discretize(peaks,10);
A = edges(bins);
B1 = smoothdata2(A);
B2 = smoothdata2(A,"movmedian");tiledlayout(2,1)nexttile
surf(B1)
title("Mean")nexttile
surf(B2)
title("Median")

平滑方法有很多(“movmean” (default) | “movmedian” | “gaussian” | “lowess” | “loess” | “sgolay”),可自行前往查看:

  • https://ww2.mathworks.cn/help/matlab/ref/smoothdata2.html

18 实时脚本新增颜色选择器


19 实时脚本带格式复制数据

实时脚本输出的矩阵或者表格可以直接复制到excel啦:

右键复制所选内容:

直接复制到excel:


当然以上只是我觉得更新的比较有意思的东西,其他还有很多硬件更新,运行速度加速等一系列更新,可自行前往release note进行查看,这里不一一赘述啦~

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

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

相关文章

uniapp确认提示框;uniapp判断输入框值是否符合正常手机号,身份证号

确认提示框 UniApp 中&#xff0c;你可以使用 uni.showModal 方法来创建确认提示框。以下是一个示例&#xff1a; <template><view class"container"><button click"showAuthModal">显示确认提示框</button></view> </…

【问题记录】解决“命令行终端”和“Git Bash”操作本地Git仓库时出现 中文乱码 的问题!

环境 Windows 11 家庭中文版git version 2.41.0.windows.1 问题情况 在使用 “命令行终端” 和 “Git Bash” 在本地Git仓库敲击命令时&#xff0c;对中文名称文件显示一连串的数字&#xff0c;如下所示&#xff1a;这种情况通常是由于字符编码设置不正确所引起的 解决办法 设置…

什么是分布式锁?他解决了什么样的问题?

相信对于朋友们来说&#xff0c;锁这个东西已经非常熟悉了&#xff0c;在说分布式锁之前&#xff0c;我们来聊聊单体应用时候的本地锁&#xff0c;这个锁很多小伙伴都会用 ✔本地锁 我们在开发单体应用的时候&#xff0c;为了保证多个线程并发访问公共资源的时候&#xff0c;…

网络编程day05(IO多路复用)

今日任务&#xff1a; TCP多路复用的客户端、服务端&#xff1a; 服务端代码&#xff1a; #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> #include <netinet/in.h> #include <unistd.h> …

uniapp 内容展开组件

uni-collapse折叠面板并不符合需求&#xff0c;需要自己写一个。 效果展示&#xff1a; 代码&#xff1a; &#xff08;vue3版本&#xff09; <template><view class"collapse-view"><view class"collapse-content"><swiper:autopl…

OpenHarmony应用核心技术理念与需求机遇简析

一、核心技术理念 图片来源&#xff1a;OpenHarmony官方网站 二、需求机遇简析 新的万物互联智能世界代表着新规则、新赛道、新切入点、新财富机会;各WEB网站、客户端( 苹果APP、安卓APK)、微信小程序等上的组织、企业、商户等;OpenHarmony既是一次机遇、同时又是一次大的挑战&…

好用的记笔记app选哪个?

当你在日常生活中突然获得了一个灵感&#xff0c;或者需要记录会议的重要内容&#xff0c;或者是学校课堂上的笔记&#xff0c;你通常会拿出手机&#xff0c;因为它总是在你身边&#xff0c;随时可用。这时候&#xff0c;一款好的记笔记App可以让你事半功倍。 敬业签是一款全面…

「UG/NX」Block UI 从列表选择部件SelectPartFromList

✨博客主页何曾参静谧的博客📌文章专栏「UG/NX」BlockUI集合📚全部专栏「UG/NX」NX二次开发「UG/NX」BlockUI集合「VS」Visual Studio「QT」QT5程序设计「C/C+&#

Qt5开发及实例V2.0-第十五章-Qt单元测试框架

Qt5开发及实例V2.0-第十五章-Qt单元测试框架 第15章 Qt 5单元测试框架15.1 QTestLib框架15.2 简单的Qt单元测试15.3 数据驱动测试15.4 简单性能测试 本章相关例程源码下载1.Qt5开发及实例_CH1501.rar 下载2.Qt5开发及实例_CH1502.rar 下载3.Qt5开发及实例_CH1503.rar 下载4.Qt5…

构建个人云存储:本地电脑搭建SFTP服务器,开启公网访问,轻松共享与管理个人文件!

本地电脑搭建SFTP服务器&#xff0c;并实现公网访问 文章目录 本地电脑搭建SFTP服务器&#xff0c;并实现公网访问1. 搭建SFTP服务器1.1 下载 freesshd 服务器软件1.3 启动SFTP服务1.4 添加用户1.5 保存所有配置 2. 安装SFTP客户端FileZilla测试2.1 配置一个本地SFTP站点2.2 内…

stm32之GPIO库函数点灯分析

stm32官方为了方便开发者&#xff0c;利用CubeMX 生成HAL库有关的C代码。HAL库就是硬件抽象层(hardware abstraction layer)&#xff0c;生成一系列的函数帮助我们快速生成工程&#xff0c;脱离复杂的寄存器配置。stm32相对于51来功能强大&#xff0c;但是寄存器的数量也不是一…

C++核心编程——P22-练习案例2:点和圆的关系

在一个类中可以让另一个类作为这个类的成员 #include<iostream> using namespace std; class Point//点类 { public:void setx(int x){c_x x;}int getx(){return c_x;}void sety(int y){c_y y;}int gety(){return c_y;}//建议将属性设置为私有&#xff0c;对外提供接口…

pcl--第十二节 2D和3D融合和手眼标定

2D&3D融合 概述 截止目前为止&#xff0c;我们学习了机器人学&#xff0c;学习了2D和3D视觉算法。我们也学习了2D相机(图像数据的来源)和3D相机(点云数据的来源)工作原理。 实际上&#xff0c;我们最终要做的&#xff0c;是一个手眼机器人系统。在这个系统里&#xff0c…

pytorch学习------常见的优化算法

优化算法 优化算法就是一种调整模型参数更新的策略&#xff0c;在深度学习和机器学习中&#xff0c;我们常常通过修改参数使得损失函数最小化或最大化。 优化算法介绍 1、梯度下降算法&#xff08;batch gradient descent BGD&#xff09; 每次迭代都需要把所有样本都送入&…

深入了解队列数据结构:定义、特性和实际应用

文章目录 &#x1f34b;引言&#x1f34b;队列的定义&#x1f34b;队列的实现&#x1f34b;队列的应用&#x1f34b;练习题&#x1f34b;结语 &#x1f34b;引言 队列&#xff08;Queue&#xff09;是计算机科学中一种重要的数据结构&#xff0c;它常用于各种应用程序中&#x…

Hive【Hive(一)DDL】

前置准备 需要启动 Hadoop 集群&#xff0c;因为我们 Hive 是在 Hadoop 集群之上运行的。 从DataGrip 或者其他外部终端连接 Hive 需要先打开 Hive 的 metastore 进程和 hiveserver2 进程。metastore 和 hiveserver2 进程的启动过程比较慢&#xff0c;不要着急。 Hive DDL 数据…

基于SpringBoot的网上超市系统的设计与实现

目录 前言 一、技术栈 二、系统功能介绍 管理员功能实现 用户功能实现 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计…

微软在Windows 11推出Copilot,将DALL-E 3集成在Bing!

美东时间9月21日&#xff0c;微软在美国纽约曼哈顿举办产品发布会&#xff0c;生成式AI成为重要主题之一。 微软表示&#xff0c;Copilot将于9月26日在Windows 11中推出&#xff1b;Microsoft 365 Copilot 将于11 月1日向企业客户全面推出&#xff1b;将OpenAI最新的文本生成图…

【论文阅读 08】Adaptive Anomaly Detection within Near-regular Milling Textures

2013年&#xff0c;太老了&#xff0c;先不看 比较老的一篇论文&#xff0c;近规则铣削纹理中的自适应异常检测 1 Abstract 在钢质量控制中的应用&#xff0c;我们提出了图像处理算法&#xff0c;用于无监督地检测隐藏在全局铣削模式内的异常。因此&#xff0c;我们考虑了基于…