Questions tagged «matlab»

MATLAB是MathWorks开发的用于数值计算和可视化的高级语言和交互式编程环境。请勿同时使用[matlab]和[octave]标签,除非问题明确涉及两者之间的相似性或差异。使用此标签时,请提及您正在使用的MATLAB版本(例如R2017a)。


9
如何在不首先将其分配给局部变量的情况下为函数返回的MATLAB数组建立索引?
例如,如果我想从中读取中间值magic(5),可以这样进行: M = magic(5); value = M(3,3); 得到value == 13。我希望能够执行以下操作之一: value = magic(5)(3,3); value = (magic(5))(3,3); 取消中间变量。但是,MATLAB抱怨Unbalanced or unexpected parenthesis or bracket在之前的第一个括号3。 是否可以在不首先将其分配给变量的情况下从数组/矩阵读取值?

10
表示并解决给定图像的迷宫
代表并解决给定图像的迷宫的最佳方法是什么? 给定JPEG图像(如上所示),读入,将其解析为某种数据结构并解决迷宫的最佳方法是什么?我的第一个本能是逐像素读取图像并将其存储在布尔值列表(数组)中:True对于白色像素,False对于非白色像素(可以丢弃颜色)。这种方法的问题在于图像可能不是“像素完美”的。我的意思只是说,如果墙壁上的某处有白色像素,可能会产生意外的路径。 另一种方法(经过一番思考后才想到)是将图像转换为SVG文件-SVG文件是在画布上绘制的路径的列表。这样,可以将路径读入相同种类的列表(布尔值),其中True表示路径或墙壁,False表示可移动的空间。如果转换不是100%准确,并且不能完全连接所有墙,从而产生间隙,则此方法会出现问题。 转换为SVG的另一个问题是这些线不是“完美”的直线。这导致路径是三次贝塞尔曲线。使用由整数索引的布尔值列表(数组),曲线将不易转移,并且必须计算曲线上直线的所有点,但不会与列表索引完全匹配。 我假设虽然其中一种方法可能会(虽然可能不会)起作用,但考虑到如此大的图像,它们的效率很低,并且存在更好的方法。如何做到最好(最有效和/或最低复杂度)?有没有最好的方法? 然后是迷宫的解决。如果我使用前两种方法中的任何一种,则基本上将得到一个矩阵。根据该答案,表示迷宫的一种好方法是使用树,而使用A *算法来解决它的好方法。一个人如何根据图像创建一棵树?有任何想法吗? TL; DR 解析的最佳方法?变成什么数据结构?所述结构将如何帮助/阻碍解决? 更新 我已尝试使用numpy@Thomas建议的方式实现@Mikhail用Python编写的内容。我认为该算法是正确的,但无法正常运行。(下面的代码。)PNG库是PyPNG。 import png, numpy, Queue, operator, itertools def is_white(coord, image): """ Returns whether (x, y) is approx. a white pixel.""" a = True for i in xrange(3): if not a: break a = image[coord[1]][coord[0] * 3 + i] > …

9
Octave和MATLAB之间的区别?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 4年前关闭。 改善这个问题 我是一个了解Python,Ruby和一些C的程序员,他们正试图决定学习GNU Octave还是Matlab。我知道它们有很多共同点,但是我尚不清楚语法甚至数据结构有多相似。每个人都说它们“相似”,但是没有人说它们实际上有多相似。上面的链接显示了几个示例,它们在语法上相似或相同,这对整个语言都是正确的吗? 我正在尝试学习通用语言,以进行更多的科学计算,可能使用一些图像分析库。我知道我可以编程使用许多其他语言,但是我的顾问说,了解MATLAB或Octave在科学中至关重要。 此外,Matlab是否值得付出代价?我没有很多钱,但是如果图书馆或其他地方有重要区别,我相信我会找到钱的。
271 matlab  octave 

4
MATLAB中的xkcd样式图
因此,有才华的人们已经找到了如何在Mathematica,LaTeX,Python和R中制作xkcd样式图的方法。 一个人如何使用MATLAB生成一个类似于上图的图? 我尝试过的 我创建了摆动的线条,但无法获得摆动的轴。我想到的唯一解决方案是用摆动的线覆盖它们,但我希望能够更改实际轴。我也无法使Humor字体工作,使用的代码位是: annotation('textbox',[left+left/8 top+0.65*top 0.05525 0.065],... 'String',{'EMBARRASSMENT'},... 'FontSize',24,... 'FontName','Humor',... 'FitBoxToText','off',... 'LineStyle','none'); 对于摆动的线,我尝试添加一个小的随机噪声并进行平滑处理: smooth(0.05*randn(size(x)),10) 但是我无法让白色背景在它们相交时出现在它们周围...
224 matlab  plot 

9
是否可以在MATLAB中为每个文件定义一个以上的函数,然后从该文件外部访问它们?
在我攻读EE的本科学位时,MATLAB要求每个函数都必须在自己的文件中定义,即使它是单行的也是如此。 我现在正在攻读研究生学位,所以我必须在MATLAB中编写一个项目。仍然需要更新版本的MATLAB吗? 如果可以在一个文件中放置多个功能,是否对此有任何限制?例如,可以从文件外部访问文件中的所有功能,还是仅从名称相同的功能访问文件? 注意:我正在使用MATLAB版本R2007b。

12
为什么MATLAB在矩阵乘法中如此之快?
我正在使用CUDA,C ++,C#,Java建立一些基准,并使用MATLAB进行验证和矩阵生成。当我使用MATLAB执行矩阵乘法时,2048x2048甚至更大的矩阵几乎都会立即相乘。 1024x1024 2048x2048 4096x4096 --------- --------- --------- CUDA C (ms) 43.11 391.05 3407.99 C++ (ms) 6137.10 64369.29 551390.93 C# (ms) 10509.00 300684.00 2527250.00 Java (ms) 9149.90 92562.28 838357.94 MATLAB (ms) 75.01 423.10 3133.90 只有CUDA具有竞争力,但是我认为至少C ++会比较接近,并且速度不会慢60倍。我也不知道该如何看待C#结果。该算法与C ++和Java相同,但与相比有很大2048的不同1024。 MATLAB如何快速执行矩阵乘法? C ++代码: float temp = 0; timer.start(); for(int j = 0; j …



2
将MATLAB代码转换为Python的工具
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 4年前关闭。 改善这个问题 我的MS论文中有一堆MATLAB代码,现在我想将其转换为Python(使用numpy / scipy和matplotlib)并作为开源分发。我知道MATLAB与Python科学库之间的相似之处,手动转换它们的时间不会超过两周(前提是我每天都会努力一段时间)。我想知道是否已经有任何工具可以进行转换。

4
是MATLAB OOP运行缓慢还是我做错了什么?
我与实验MATLAB OOP,因为一开始我模仿我的C ++的记录器类和我把我所有的字符串辅助函数在String类,以为这将是巨大的,能够做的事情一样a + b,a == b,a.find( b )而不是strcat( a b ),strcmp( a, b ),检索的第一个元素strfind( a, b ),等等。 问题:减速 我把以上这些东西都使用了,立即注意到速度急剧下降。我做错了吗(由于我有限的MATLAB经验,这肯定是可能的),还是MATLAB的OOP只是引入了很多开销? 我的测试用例 这是我对字符串所做的简单测试,基本上只是添加一个字符串,然后再次删除添加的部分: 注意:实际不要在实际代码中编写这样的String类!Matlab现在具有本机string数组类型,您应该使用它。 classdef String < handle .... properties stringobj = ''; end function o = plus( o, b ) o.stringobj = [ o.stringobj b ]; end function n = …


11
R无法做到的MATLAB能做什么?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它当前不接受新的答案或互动。 我经常听到人们抱怨MATLAB许可证的价格昂贵。然后,我不知道为什么他们不只是用八度或[R 。但是后者对吗?可以使用R取代MATLAB吗?

5
在Matlab中,何时最佳使用bsxfun?
我的问题:我注意到,关于SO的Matlab问题的很多很好的答案经常使用该函数bsxfun。为什么? 动机:在Matlab文档中bsxfun,提供了以下示例: A = magic(5); A = bsxfun(@minus, A, mean(A)) 当然,我们可以使用以下方法执行相同的操作: A = A - (ones(size(A, 1), 1) * mean(A)); 实际上,简单的速度测试表明第二种方法的速度提高了约20%。那么为什么要使用第一种方法呢?我猜测在某些情况下使用bsxfun速度会比“手动”方法快得多。我真的很想看到这种情况的示例,并解释为什么它更快。 同样,这个问题的最后一个元素,同样来自Matlab文档,内容为bsxfun:“ C = bsxfun(fun,A,B)将函数句柄fun指定的逐个元素的二进制运算应用于数组A和B,且单例扩展已启用。”。短语“启用单例扩展已启用”是什么意思?
135 arrays  matlab  bsxfun 

16
如何在Matlab中为函数参数设置默认值?
Matlab中可以有默认参数吗?例如,在这里: function wave(a, b, n, k, T, f, flag, fTrue=inline('0')) 我希望真正的解决方案是wave函数的可选参数。如果有可能,谁能证明这样做的正确方法?目前,我正在尝试上面发布的内容,然后得到: ??? Error: File: wave.m Line: 1 Column: 37 The expression to the left of the equals sign is not a valid target for an assignment.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.