小编Dev*_*-iL的帖子

在Matlab中从命令行运行特定的单元格部分?

我在脚本中手动遍历Matlab中的各个单元(我们称它为foo.m):

%%
%Code for cell 1

%%
%Code for cell 2
Run Code Online (Sandbox Code Playgroud)

从Matlab的命令行中,我希望能够在单元2中有选择地运行代码。文档中仅包含有关如何进行交互操作的说明(例如,将光标放在适当的单元中,然后等等)。我想要命令行的内容,所以可以执行foo.runCell(1)之类的操作来运行上面单元格1中的代码。

如果没有办法,我将把这些单元分解成单独的脚本/函数。这不太方便,因为我处于“快速磨削原型”编码模式下,因此现在将所有内容都存储在一个文件中。

matlab matlab-java

5
推荐指数
1
解决办法
3473
查看次数

在多监视器配置中确定MATLAB的监视器

我从公司网站到另一个网站移动很多.在任何一天,我可能只有我的笔记本电脑或多达四台显示器.有了多个显示器,我不知道我将选择使用哪个显示器用于MATLAB主GUI(双击matlab.exe时启动的主GUI).这取决于可用监视器的分辨率.

我使用的脚本利用程序生成的GUI(而不是GUIDE),似乎MATLAB总是在第一台显示器上弹出它们.我研究了一点,发现通过使用定位图形用户界面来选择的显示器p = get(gcf, 'Position'),set(0, 'DefaultFigurePosition', p)movegui命令,但这次如果我事先知道我要使用的显示器才有效.

有没有办法找出主要的MATLAB GUI在哪台显示器上运行,并在同一台显示器上弹出其他小的GUI?

matlab position multiple-monitors matlab-figure matlab-gui

5
推荐指数
1
解决办法
879
查看次数

通过交错复制 3D 阵列的页面构建邻接矩阵

背景

我正在尝试建模一个可以在每个时间步更改其配置的系统。各种配置是预先知道的,不依赖于时间步长。在某些配置之间允许转换,而在其他配置之间禁止转换。目标是构建一个跨越多个时间步长的允许转换的邻接矩阵。

环境

A成为s*s*k表示允许转换的逻辑矩阵,并A1...Ak表示 的页面/切片A

A1 = A(:,:,1); A2 = A(:,:,2); ... Ak = A(:,:,k);
Run Code Online (Sandbox Code Playgroud)

第三维的含义是转换需要多少时间步,例如:如果A(1,3,2)非零,则表示状态#1可以转换为状态#3,这将需要2时间步。

B成为我们想要构建的邻接矩阵,它表示nt时间步长。的形状B应该是示意性的(以块矩阵表示法):

A1 = A(:,:,1); A2 = A(:,:,2); ... Ak = A(:,:,k);
Run Code Online (Sandbox Code Playgroud)

其中主块对角线由nt0 个块组成,并且 的切片A逐渐“向右推”直到“时间用完”, 的切片A最终“超出”了B? 表明不可能有更多的转换。由于Bnt*nt s*s块组成,因此其大小为(nt*s)×(nt*s)

问题:给定Aand nt,我们如何B以最节省 CPU 和内存的方式构造?

笔记 …

performance matlab graph-theory matrix adjacency-matrix

5
推荐指数
1
解决办法
74
查看次数

求解并绘制分段 ODE

我有一个函数d\xcf\x86/dt = \xce\xb3 - F(\xcf\x86)(其中F(\xcf\x86)-- a 是2\xcf\x80周期函数)和该函数的图形F(\xcf\x86)

\n

我需要创建一个程序,输出 6 个\xcf\x86(t)不同值\xce\xb3( \xce\xb3 = 0.10.50.951.0525)和 的图t\xe2\x88\x88[0,100]

\n

这是函数的定义F(\xcf\x86)

\n
      -\xcf\x86/a - \xcf\x80/a,    if \xcf\x86 \xe2\x88\x88 [-\xcf\x80, -\xcf\x80 + a]\n      -1,            if \xcf\x86 \xe2\x88\x88 [-\xcf\x80 + a, - a] \nF(\xcf\x86) = \xcf\x86/a,          if \xcf\x86 \xe2\x88\x88 [- a, a]\n       1,            if \xcf\x86 \xe2\x88\x88 [a, \xcf\x80 - …
Run Code Online (Sandbox Code Playgroud)

matlab plot ode piecewise periodicity

5
推荐指数
1
解决办法
321
查看次数

计算数组中下n个元素的乘积

我想计算n矩阵的下一个相邻元素的乘积.n要乘以的元素数量应在函数输入中给出.例如,对于此输入,我应该从第一个开始计算每3个连续元素的乘积.

[p, ind] = max_product([1 2 2 1 3 1],3);
Run Code Online (Sandbox Code Playgroud)

这给了[1*2*2, 2*2*1, 2*1*3, 1*3*1] = [4,4,6,3].

有没有实用的方法呢?现在我这样做:

for ii = 1:(length(v)-2)
    p = prod(v(ii:ii+n-1));
end
Run Code Online (Sandbox Code Playgroud)

v输入向量在哪里,是n要乘的元素数.

在此示例中,n=3但可以采用任何正整数值.

根据n是奇数还是偶数还是length(v)奇数或偶数,我有时得到正确的答案但有时会出错.
例如参数:

v = [1.35912281237829 -0.958120385352704 -0.553335935098461 1.44601450110386 1.43760259196739 0.0266423803393867 0.417039432979809 1.14033971399183 -0.418125096873537 -1.99362640306847 -0.589833539347417 -0.218969651537063 1.49863539349242 0.338844452879616 1.34169199365703 0.181185490389383 0.102817336496793 0.104835620599133 -2.70026800170358 1.46129128974515 0.64413523430416 0.921962619821458 0.568712984110933] 
n = 7
Run Code Online (Sandbox Code Playgroud)

我收到错误:

Index exceeds matrix dimensions.
Error in max_product …
Run Code Online (Sandbox Code Playgroud)

arrays matlab matrix multiplication sliding-window

4
推荐指数
2
解决办法
1130
查看次数

MATLAB 3D图中的透视控制

如何在MATLAB 3D图形的透视图中更改消失点(P1,P2,P3)?下面是一个解释我的意思的方案:

在此输入图像描述

在此先感谢您的帮助.

matlab projection angle computational-geometry matlab-figure

4
推荐指数
1
解决办法
740
查看次数

在两个Matlab矩阵之间找到相等的行

我有一个矩阵index在Matlab与尺寸GxN和矩阵A与尺寸MxN.

在提出我的问题之前,让我举一个例子.

clear
N=3;
G=2;
M=5;

index=[1  2  3;
       13 14 15]; %GxN

A=[1  2  3; 
   5  6  7; 
   21 22 23; 
   1  2  3;
   13 14 15]; %MxN
Run Code Online (Sandbox Code Playgroud)

我想您的帮助,以构建一个矩阵Response,大小GxMResponse(g,m)=1行是否A(m,:)等于index(g,:)否则为零.

继续上面的例子

Response= [1 0 0 1 0; 
           0 0 0 0 1]; %GxM
Run Code Online (Sandbox Code Playgroud)

这段代码做了我想要的(取自我之前的一个问题 - 只是为了澄清:当前的问题是不同的)

Response=permute(any(all(bsxfun(@eq, reshape(index.', N, [], G), permute(A, [2 3 4 1])), 1), 2), [3 4 1 …
Run Code Online (Sandbox Code Playgroud)

performance matlab rows matrix set-intersection

4
推荐指数
2
解决办法
82
查看次数

无法使用Matlab Coder将Matlab代码转换为C代码

我有一个MATLAB代码如下所示.我试图使用MATLAB Coder将此代码转换为C代码,但我遇到了错误.

在此输入图像描述

预期逻辑,char,int,fi,single或double.找到了一个mxArray.MxArrays从对MATLAB解释器的调用返回,并且在表达式中不受支持.它们可能只用于赋值的右侧,也可用作外在函数的参数.

% Applies A-weighted filtering to sound and draws it's plot
% in a figure as output.
function A_filtering
coder.extrinsic('tic')
coder.extrinsic('toc')
coder.extrinsic('display')
sampleRate = 44100;
reader = dsp.AudioFileReader('Jet_Flypast.wav');
fs = 44100;
weightFilter = weightingFilter('A-weighting',fs);
% fileWriter = dsp.AudioFileWriter('SampleRate',fs);
% visualize(weightFilter,'class 1')
scope = dsp.SpectrumAnalyzer('SampleRate',fs,...
    'PlotAsTwoSidedSpectrum',false,...
    'FrequencyScale','Log',...
    'FrequencyResolutionMethod','WindowLength',...
    'WindowLength',sampleRate,...
    'Title','A-weighted filtering',...
    'ShowLegend',true,...
    'ChannelNames',{'Original Signal','Filtered Signal'});

tic
while toc < 60
    x = reader();
    y = weightFilter(x);
    scope([x(:,1),y(:,1)])
    display(x(:,1))
end

release(scope);
release(weightFilter);
release(reader);
end
Run Code Online (Sandbox Code Playgroud)

这个问题可能是重复的,但我搜索了互联网,找不到任何相关的帖子.有什么方法可以解决这个错误吗?

c matlab code-generation mex matlab-coder

4
推荐指数
1
解决办法
144
查看次数

将文字带到情节的正面

我在MATLAB中有一个数字.然后我通过输入添加一个文本,

b = text(0.5, 0.5, 'Detector action', 'Rotation', -70, 'FontSize', 25);
Run Code Online (Sandbox Code Playgroud)

但文字背后的数字(见下文), 在此输入图像描述

我也试过了,

uistack(b, 'top');
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

matlab text rotation matlab-figure bringtofront

4
推荐指数
1
解决办法
97
查看次数

初始化非标准值的双数组的最快方法

MATLAB提供了预分配/初始化数组的函数,这些数组具有常见值,如01.但是,如果我们希望数组具有一些任意double,那么有多种方法可以做到这一点,并且不明显哪一个更可取.

这个问题并不新鲜 - 以前在这篇博客文章本回答中讨论过这个问题.但是,经验表明,软件(特别是MATLAB及其执行引擎)和硬件随时间而变化,因此最佳方法可能在不同系统上有所不同.不幸的是,前面提到的资源不提供基准测试代码,这可能是回答这个问题的最终(和永恒)方式.

我正在寻找一个可以运行的基准测试,它可以告诉我在我的系统上使用最快的方法,考虑到我可能正在使用各种大小的"常规" double数组和gpuArray double数组.

arrays performance matlab gpgpu initialization

4
推荐指数
1
解决办法
66
查看次数