我有一个布尔数组调用它flag.
我有两个数字数组ifTrue,ifFalse.所有这些数组都是相同的大小.出于这个问题的目的,假设这些数组中的每个元素都是唯一的.
我想要一个g具有该属性的函数
a = g(flag, ifTrue, ifFalse)
all(flag == (a == ifTrue))
all(~flag == (a == ifFalse))
Run Code Online (Sandbox Code Playgroud)
或者用英语,我想g在if 为true ifTrue时返回元素flag,ifFalse在flagfalse 时返回元素.
或者,在matlab中,我可以用循环来做到这一点:
a = zeros(size(ifTrue));
for i = 1 : numel(ifTrue);
if flag(i)
a(i) = ifTrue(i)
else
a(i) = ifFalse(i)
end
end
Run Code Online (Sandbox Code Playgroud)
有矢量化的方法吗?
谢谢
我们有相当数量的openCV代码,我们计划调查英特尔的IPP,并了解我们在应用程序中可以实现哪种加速.
英特尔有一篇关于如何链接OpenCV和IPP的白皮书. 将英特尔IPP与OpenCV一起使用 在某些情况下,链接可能是自动的,但支持的数量尚不清楚.
我们是一家门店,对任何战争故事或者在进行此类评估时需要注意的问题/问题感兴趣.
谢谢
我有一个算法,我正在使用我的工作,但我需要一个名称.我很好奇文献中是否存在这种算法的名称.
该算法采用像素化高度图和起始点s,并返回修改的像素化高度图.对于返回高度图中的每个像素p,p是您必须通过以从s到p 的最低高度值.
例如,考虑Matlab中的"峰值"图像: imagesc(peak)
.
并使用像素(20,20)作为种子,然后我描述的这个修改后的高度图看起来像这样:
.
我把这称为洪水填充算法,直到我的同事们指出洪水填充通常是二进制地图.所以,我已经把这称为"渐变洪水填充"算法.
我们还没有发现文献中定义的这种操作.有什么建议?
我有一个MATLAB GUI和一个将数据写入文件的独立应用程序.我希望我的MATLAB GUI定期检查文件,并在更改时更新GUI.
在Java中,我使用SwingUtils.Timer(sp?)对象来做这样的事情.MATLAB有定时器功能吗?我可以编写一个java类并且我想这样做,但是想要一个快速和脏的演示,最好是纯MATLAB.
我有一个散点图,大约有6000个项目.
x = rand(1,6000);
y = rand(1,6000);
scatter(x,y)
Run Code Online (Sandbox Code Playgroud)
有没有办法使用GUI查找给定点的索引?(我们放大数据,并希望找到产生一个点的具体指数)
发布R2016a之前,出版是在 MATLAB中的方式来记录一个脚本的结果.我发现当我手动运行脚本时,我经常pause在整个脚本中放置命令.有没有一种简单的方法来确定脚本是否已发布?然后,我可以将我的暂停包含在一些代码中:
if isNotPublishing
pause();
end
Run Code Online (Sandbox Code Playgroud)
我的google foo让我无法找到解决方案.
我正在使用Mathematica 7.
我有一个插值函数,这是一个例子:
pressures =
WeatherData["Chicago", "Pressure", {2010, 8}] //
DeleteCases[#, {_, _Missing}] & //
Map[{AbsoluteTime[#[[1]]], #[[2]]} &, #] & // Interpolation;
Run Code Online (Sandbox Code Playgroud)
我想计算它的衍生物,这是直截了当的:
dpressures = D[pressures[x], x]
Run Code Online (Sandbox Code Playgroud)
现在,如果你绘制这个功能
Plot[3600*dpressures, {x, AbsoluteTime[{2010, 8, 2}], AbsoluteTime[{2010, 8, 30}]}]
Run Code Online (Sandbox Code Playgroud)
(抱歉,不知道如何从Mathematica中发布图像,并且没有时间弄明白.)你会发现它非常嘈杂.所以,我想说清楚它.我的第一个想法是使用Convolve,并将其与高斯内核集成,如下所示:
a = Convolve[PDF[NormalDistribution[0, 5], x], 3600*dpressures, x, y]
Run Code Online (Sandbox Code Playgroud)
返回
360 Sqrt[2/\[Pi]] Convolve[E^(-(x^2/50)), InterpolatingFunction[{{3.48961266 10^9, 3.49228746 10^9}},<>], ][x], x, y]
Run Code Online (Sandbox Code Playgroud)
这对我来说看起来很合理.不幸的是,我相信我在某个地方犯了一个错误,因为我回来的结果似乎不是可评估的.那是:
a /. y -> AbsoluteTime[{2010, 8, 2}]
Run Code Online (Sandbox Code Playgroud)
返回
360 Sqrt[2/\[Pi]] Convolve[E^(-(x^2/50)), InterpolatingFunction[{{3.48961266 10^9, 3.49228746 10^9}},<>][x], x, 3489696000]]
Run Code Online (Sandbox Code Playgroud)
这不是我想要的东西我期待-1到1之间的数字.
MSDOS move sourceDirectory destinationDirectory命令何时sourceDirectory和destinationDirectory在同一个硬盘驱动器上只是移动一些链接,并没有实际将所有文件复制到新位置,然后删除它们.
当和在同一个硬盘驱动器上时,是否robocopy sourceDirectory destinationDirectory /mov像MSDOS move命令一样?sourceDirectorydestinationDirectory
我能够找到的所有robocopy文档在这一点上都不清楚.
我正在运行64位Windows7以防万一.
我有一个MATLAB结构阵列Modles1大小(1x180)的具有字段a,b,c,..., z.
我想了解每个字段中有多少个不同的值.即
max(grp2idx([foo(:).a]))
Run Code Online (Sandbox Code Playgroud)
如果该字段a是双倍的,则上述工作. {foo(:).a}需要在字段a是字符串/ char的情况下使用.
这是我目前执行此操作的代码.我讨厌必须使用eval,本质上是一个switch语句.有没有更好的办法?
names = fieldnames(Models1);
for ix = 1 : numel(names)
className = eval(['class(Models1(1).',names{ix},')']);
if strcmp('double', className) || strcmp('logical',className)
eval([' values = [Models1(:).',names{ix},'];']);
elseif strcmp('char', className)
eval([' values = {Models1(:).',names{ix},'};']);
else
disp(['Unrecognized class: ', className]);
end
% this line requires the statistics toolbox.
[g, gn, gl] = grp2idx(values);
fprintf('%30s : %4d\n',names{ix},max(g));
end
Run Code Online (Sandbox Code Playgroud) 我有一个源文件,它大约有10年历史,有100个更改.我能够使用手动二进制搜索来识别添加特定方法的点.
在TFS中有更有效的方法吗?
matlab ×6
algorithm ×1
c++ ×1
convolution ×1
directory ×1
flood-fill ×1
intel-ipp ×1
opencv ×1
performance ×1
publish ×1
reflection ×1
robocopy ×1
scatter-plot ×1
structure ×1
tfs ×1
timer ×1