安装R2018b后,我打开的第一个数字包含一条有趣的消息(以蓝色显示):
它之所以有趣,是因为它包含文本换行,透明度等功能,即使文本调整大小,图像也保持恒定宽度(这让我想起了CSS3 flexbox,因此标签)等等.
动画的最后一部分是慢动作,以更好地显示div的大小如何跟随图形的大小.
如果重要,我正在使用Win 10 v1803.
我想知道我们如何可以得出类似的,定制的,申报单(对于缺乏一个更好的词)在我们的数字.(重要的是要强调这不是一个UIFigure!)
到目前为止我发现了什么:
" 了解更多"链接打开页面:
web(fullfile(docroot, 'matlab/creating_plots/interactively-explore-plotted-data.html'))
Run Code Online (Sandbox Code Playgroud)
然而,任何一个web或docroot(或偶数doc)的入口点的断点都没有被击中.
假设这个元素是Child图中的一个,我试图找到它的句柄:
>> set(gcf,'MenuBar','none'); findall(gcf)
ans =
22×1 graphics array:
Figure (1)
ContextMenu
AnnotationPane
Axes
AxesToolbar
Text
Text
Text
ToolbarStateButton (Brush/Select Data)
ToolbarStateButton (Data Tips)
ToolbarStateButton (Rotate 3-D)
ToolbarStateButton (Pan)
ToolbarStateButton (Zoom In)
ToolbarStateButton (Zoom Out)
ToolbarPushButton (Restore View)
Button
Button
Button
Button
Button
Button
Button
Run Code Online (Sandbox Code Playgroud)
然而,使这些控件不可见使用set(h(2:end), 'Visible', …
matlab undocumented-behavior flexbox matlab-figure matlab-gui
我有与某些测量设备接口的软件(Altair).该软件的一组有限的功能作为API公开,制造商以其MATLAB实现的形式提供给我(没有额外的文档).根据提供的来源,我知道与此应用程序的所有通信都使用Kernel32.dll或user32.dll(Windows API库),更具体地说使用以下方法:
user32)user32)user32)Kernel32)我在API中缺少的一个功能是能够检索隐藏在该软件某处的某个文本设置.幸运的是,该设置显示TextBox在其UI中的(具有不可选文本)内.
我的目标是在MATLAB中获得一个出现在这个单独的非MATLAB窗口中的字符串.
一个快速的互联网搜索显示1,2,这是实际上是可能的,通过Windows API,如果HWND(句柄窗口)可以为特定的控制(或"窗口")获得有所需String.WM_GETTEXT然后将A 发送到控件,理论上返回该字符串.
我采取的第一步是检查a HWND是否可以获得.这是使用Microsoft Spy ++实用程序(可选配VS2015)完成的.结果如下:
上述层次结构意味着,4 个 child班Static的3 次 child的1 日 child .....窗口"牵牛星"的就是我要找的.
就Windows API而言,这些方法对于遍历窗口层次结构和获取字符串非常有用:
MATLAB允许为自定义类重载各种运算符.其中一个未列出的可重载运算符end,可以从\matlab\lang\end.m以下方面了解到:
% END(A,K,N) is called for indexing expressions involving the object A
% when END is part of the K-th index out of N indices. For example,
% the expression A(end-1,:) calls A's END method with END(A,1,2).
Run Code Online (Sandbox Code Playgroud)
这种方法的一个例子是table.end(粘贴在MATLAB命令行中并按"打开选择"以转到其定义;它在中定义...\matlab\datatypes\@tabular\end.m).
与普通方法不同,人们不能简单地写hEnd = @end,因为这会给出错误:
>> hEnd = @end;
hEnd = @end;
?
Error: Illegal use of reserved keyword "end".
Run Code Online (Sandbox Code Playgroud)
另一方面,写入e = str2func('end');工作,但它链接到默认end功能(即使临时切换到end.m找到所需的文件夹).
失败的尝试包括str2func('table>end');, …
我创建了下面的地图,它有一个均匀的灰色网格,间隔为1°,对于经线和纬线:
我还希望每隔5°间隔(同时保持1°网格)使经线和平行线变粗和变黑,以便网格线与纬度和经度标签匹配,如下所示:
我知道MATLAB有标准2D图的主要和次要网格,我过去曾使用它们.但是,据我所知,地图没有此功能.
我认为我想要做的就是通过访问地图对象属性(使用gcm或getm)并为特定子午线和平行子(使用)指定黑色属性来实现setm.也许功能gridm或axesm可以处理这个,但我不确定.
在实践中,我不知道如何做到这一点,因为我没有任何地图经验.我真的很感激你的帮助.
注意:此代码需要Mapping Toolbox.
% Read vector features and attributes from shapefile.
landareas = shaperead('landareas.shp', 'UseGeoCoords', true);
% Define map axes and set map properties.
axesm ('lambert',...
'MapLonLimit', [-70 10],...
'MapLatLimit', [30 70],...
'MapParallels', [38.00555556 71.01111111],...
'Frame', 'on',...
'FLineWidth', 1,...
'Grid', 'on',...
'GLineStyle', '-',...
'GLineWidth', 0.1,...
'GColor', [.7 .7 .7]);
% Display map latitude and longitude data.
geoshow(landareas, 'FaceColor', [1 1 .5], …Run Code Online (Sandbox Code Playgroud) 我正在寻找有关如何优雅地解决以下问题的建议.虽然在我的具体案例中表现不是问题,但我会对有关良好做法的评论表示赞赏.
提前致谢!
我试图根据一些逻辑平均矩阵行,而忽略NaN值.我目前的代码没有按照我想要的方式处理NaN值.
我的数据以下列方式构建:
这是一个例子:
DATA = [...
180 NaN NaN 1.733
180 NaN NaN 1.703
200 0.720 2.117 1.738
200 0.706 2.073 1.722
200 0.693 2.025 1.723
200 NaN NaN 1.729
210 NaN NaN 1.820
210 NaN NaN 1.813
210 NaN NaN 1.805
240 NaN NaN 1.951
240 NaN NaN 1.946
240 NaN NaN 1.946
270 NaN NaN 2.061
270 NaN NaN 2.052
300 0.754 2.356 2.103
300 0.758 2.342 2.057
300 NaN …Run Code Online (Sandbox Code Playgroud) 我一直在努力解决这个问题的时间比我想承认的要长一些.
我正在尝试以编程方式执行Action当用户单击View> Collapse All按钮或在编辑器窗口中右键单击然后Code Folding>时发生的相同操作Fold All.
到目前为止我发现了什么?
String对应于Action可在发现enum com.mathworks.mde.editor.ActionID并为:'collapse-all-folds'.Action激活时,似乎执行以下方法:( org.netbeans.api.editor.fold.FoldUtilities.collapseAll(...)因此netbeans标记).EditorAction,ActionManager,MatlabEditor:jEd = com.mathworks.mlservices.MLEditorServices.getEditorApplication.getActiveEditor;
jAm = com.mathworks.mde.editor.ActionManager(jEd);
jAc = com.mathworks.mde.editor.EditorAction('collapse-all-folds');
Run Code Online (Sandbox Code Playgroud)
我的问题是,我不能找到一种方法,实际上是激活的Action.
任何想法/替代品?
EDIT1:在"书"中挖了一下之后,我觉得我比以前更接近(但仍然不是那里).从书中引用:
Java GUI组件通常使用a
ActionMap来存储Actions由侦听器在鼠标,键盘,属性或容器事件上调用的runnable .与对象方法不同Actions,MATLAB不能直接调用.
然后解释了一个解决方法,其中大致涉及:获取某种Action对象; 使用as作为参数创建ActionEvent和调用Action' ,如下所示:actionPerformedActionEvent
import java.awt.event.*;
jEd …Run Code Online (Sandbox Code Playgroud) 我正在使用React Native为Android和iOS开发应用程序.
我使用的其中一个库有点问题,因为应用程序只能正确编译:
"react-native": "0.42.0"."react-native": "0.37.0".(图书馆本身,以及特定版本react-native都不适用于此讨论.重要的是,我似乎需要"同时"两个单独的版本- 每个平台都有不同的版本.)
我正在寻找一种方法来拥有一个代码库,可以使用任何平台的相关工具进行编译,无需任何修改1.我想到的解决方案是(以某种方式):
package.json每个平台都有完全不同的文件.但是,我不知道如何实现上述任何一种方法,或者它们是否可行.我尝试添加.ios并在平台特定代码.android的React-Native文档中进行了解释,但是npm无法识别这些文件.
所以我的问题是:
1在类似C的代码中,使用预处理器标志会很容易.
dependencies os-dependent multiple-versions npm react-native
我目前正在尝试显示我在Matlab应用程序设计器应用程序中通过串口接收的数据.我正在遭受线性仪表的极差刷新率(~1 Hz).
仪表的值由固定速率定时器更新,定时器设置为30Hz.计时器回调中的时间戳打印显示我以正确的频率调用它.我的计算机非常强大,任务管理器没有显示任何高负载的迹象 - 实际上,MATLAB应用程序几乎不消耗任何CPU时间.它实际上不仅仅是仪表而是所有UI元素.
所以我的猜测 - 或更好:我的希望 - 是刷新率必须有一些硬性上限.但是,官方文档没有提供有关如何更改此内容的任何提示.
我的MATLAB版本是R2016b.
所以我的问题:
这是用R2017a修复的吗?
如果没有:我可以做些什么,即摆弄MATLAB内置文件?
这是一个MCV示例,演示了这个问题:
classdef testapp < matlab.apps.AppBase
% Properties that correspond to app components
properties (Access = public)
UIFigure matlab.ui.Figure
andwatchhowthisstartstospinsmoothlyGaugeLabel matlab.ui.control.Label
andwatchhowthisstartstospinsmoothlyGauge matlab.ui.control.SemicircularGauge
KeepturninghereKnobLabel matlab.ui.control.Label
KeepturninghereKnob matlab.ui.control.Knob
end
properties (Access = private)
tim_the_timer
i = 0;
end
methods (Access = private)
function app = refreshMeter(app, ~,~)
% display timestamp
datestr(now,'HH:MM:SS.FFF')
% update the gauge
app.andwatchhowthisstartstospinsmoothlyGauge.Value = app.i;
app.i = app.i + 1;
if app.i > 100
app.i …Run Code Online (Sandbox Code Playgroud) matlab user-interface refresh data-visualization matlab-app-designer
MATLAB 提供了该addlistener函数。
侦听器允许我们跟踪对象属性的变化并对其采取行动。例如,我们可以创建一个非常简单的侦听器,当对象的'YLim'属性axes发生更改时,它将在命令窗口中显示一条消息:
% Example using axes
ax = axes();
addlistener(ax, 'YLim', 'PostSet', @(src, evnt)disp('YLim changed'));
Run Code Online (Sandbox Code Playgroud)
尝试平移轴或放大/缩小,看看会发生什么。这工作正常。
我需要做同样的事情,但使用 anuiaxes代替。
不幸的是,我们似乎不允许这样做。尝试运行以下示例:
% Example using uiaxes
ax = uiaxes();
addlistener(ax, 'YLim', 'PostSet', @(src, evnt)disp('YLim changed'));
Run Code Online (Sandbox Code Playgroud)
它抛出这个错误:
错误使用 matlab.ui.control.UIAxes/addlistener 添加 PostSet 侦听器时,类“matlab.ui.control.UIAxes”中的属性“YLim”未定义为 SetObservable。
我已经阅读了“监听属性值的变化”和“观察属性值的变化”的文章,我了解到必须声明一个属性才能SetObservable被监听:
classdef PropLis < handle
properties (SetObservable)
ObservedProp = 1 % <-- Observable Property
end
end
Run Code Online (Sandbox Code Playgroud)
我试过通过查看UIAxes类定义,edit matlab.ui.control.UIAxes但这是不可能的,因为它是一个P-file。 …
matlab listener observable matlab-figure matlab-app-designer
matlab ×9
accumarray ×1
dependencies ×1
flexbox ×1
function ×1
geo ×1
gridlines ×1
ipc ×1
java ×1
listener ×1
matlab-gui ×1
matlab-java ×1
metadata ×1
namespaces ×1
nan ×1
netbeans ×1
npm ×1
observable ×1
oop ×1
os-dependent ×1
package ×1
plot ×1
pointers ×1
react-native ×1
refresh ×1
winapi ×1