小编Ste*_*fin的帖子

"未定义函数'function_name'用于'double'类型的输入参数."

以不同形状和大小经常弹出的问题是:为什么我会收到以下错误消息:

"未定义函数'function_name'用于'double'类型的输入参数."

本文试图解决可能出现此错误消息的所有不同方案,并提出解决方案的解决方案.

matlab undefined octave

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

为什么在脚本"预热"后Matlab运行得更快?

我注意到第一次运行脚本时,它比第二次和第三次需要更多的时间1.没有解释的情况下,在这个问题中提到 "热身" .

为什么代码在"预热"后运行得更快?

我不在clear all调用2之间,但每个函数调用的输入参数都会改变.有人知道为什么吗?


1.我在本地获得了许可证,因此这不是与许可证检查有关的问题.

实际上,如果我,行为不会改变clear all.

benchmarking matlab warm-up

19
推荐指数
1
解决办法
2776
查看次数

可以从调试器停止并继续执行吗?

有没有办法从ctrl + c这样的调试器中停止执行matlab程序,但是能够继续执行(比如你可以说c#)?

如果没有,除了尝试在matlab代码中预先设置断点或dbstop语句之外,还有更好的解决方法吗?

我希望能够中断长时间运行的模拟以查看当前状态,然后继续模拟.

我目前使用/考虑的两个选项是

  1. 代码中的dbstop命令(或(条件)断点).缺点是有时候我不想停止模拟几个小时,有时候想要在几秒钟之后停止(我不一定知道提前知道)并且这对这种方法不起作用:如果我将中断条件设置为每5分钟中断一次,我就不能让matlab在没有交互的情况下运行数小时.如果我将条件设置得更高,我必须等待太久才能达到条件.

  2. 包括每隔几秒/几分钟保存工作空间的代码,并将工作空间导入第二个matlab实例.缺点是这是一个巨大的麻烦,也不一定允许我使用已保存工作空间的状态恢复模拟,然后逐步执行代码几次迭代.

我希望有比2中任何一个更好的解决方案.感谢任何建议!

编辑:我认为我要做的是编写简单的matlab函数,每次迭代检查环境变量或磁盘上的文件,如果我在此文件或env中设置了一个标志,则调用dbstop.通过这种方式,我可以通过编辑文件来控制断点从matlab外部命中的时间(如果需要的话).凌乱,但应该工作.

debugging matlab

16
推荐指数
2
解决办法
1万
查看次数

交织矢量

我想在MATLAB中交织两个向量.事实上,我实际上只想在每个元素之间添加一个零,但我想我会以这样的方式提出问题,以便我学会如何将其应用于其他情况.

我的具体应用:我想采用矢量(例如[1 2 3])和输出[0 1 0 2 0 3].

在更广泛的问题:我将如何做到这一点有两个不同的载体,例如[1 2 3][9 8 7]交织产生[9 1 8 2 7 3].

在上述任何一个或两个问题中,任何帮助都非常受欢迎.

matlab vector

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

为什么在Matlab和Octave中inv()和pinv()的输出不相等?

我注意到如果A是NxN矩阵并且它具有逆矩阵.但是inv()和pinv()函数输出是不同的. - 我的环境是Win7x64 SP1,Matlab R2012a,Cygwin Octave 3.6.4,FreeMat 4.2

看看Octave的例子:

A = rand(3,3)
A =
0.185987   0.192125   0.046346
0.140710   0.351007   0.236889
0.155899   0.107302   0.300623

pinv(A) == inv(A)
ans =
0 0 0
0 0 0
0 0 0
Run Code Online (Sandbox Code Playgroud)
  • 这一切都同ans通过上面运行在Matlab同一命令的结果.

  • 我计算inv(A)*AA*inv(A),结果是Octave和Matlab中的身份3x3矩阵.
  • 结果A*pinv(A)pinv(A)*A在Matlab和FreeMat身份3x3矩阵.
  • 的结果 A*pinv(A)是Octave中的身份3x3矩阵.
  • 结果pinv(A)*A不是在倍频身份3x3矩阵.

我不知道原因 inv(A) != pinv(A),我已经考虑了矩阵中元素的细节.这似乎是导致这个问题的浮动精度问题.

点点后10位数可能不同,如下所示:

  • 6.65858991579923298331777914427220821380615200000000inv(A)(1,1)反对的元素

  • 6.65858991579923209513935944414697587490081800000000 元素 pinv(A)(1,1)

precision matlab floating-accuracy matrix-inverse numerical-analysis

14
推荐指数
3
解决办法
2万
查看次数

"展平"单元阵列

我创建了一个函数,它为输入变量提供向量,并为每组输入返回一个单元格数组.最终输出变量(out)似乎由包含两个1x5单元的2x1单元组成.我提供了以下截图:

当前输出的屏幕截图

我只想弄清楚如何将单元阵列(out)展平为2x5单元阵列.

arrays matlab multidimensional-array cell-array

14
推荐指数
2
解决办法
6381
查看次数

求解形式Ax = B ==>错误的矩阵:矩阵接近单数或严重缩放

我在解决Ax = B形式的系统时遇到了麻烦

该系统的解决方案应该是

x = inv(A)*B
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用.

我尝试上面的代码行时收到以下错误消息:

Warning: Matrix is close to singular or badly scaled.
     Results may be inaccurate. RCOND = 1.156482e-018. 
Run Code Online (Sandbox Code Playgroud)

似乎matlab在反转我指定的矩阵时遇到了麻烦.我试着通过输入inv(A)*A来验证反函数是否正常工作

这应该给出单位矩阵,但是我得到了相同的错误和一些垃圾数.

这是我正在使用的A矩阵:

A = [5/2   1/2  -1     0     0    -1/2  -1/2   0     0
     1/2   1/2   0     0     0    -1/2  -1/2   0     0 
    -1     0     5/2  -1/2  -1     0     0    -1/2   1/2
     0     0    -1/2   1/2   0     0     0     1/2  -1/2
     0     0    -1     0     3/2  -1/2   1/2   0     0
    -1/2  -1/2   0     0    -1/2 …
Run Code Online (Sandbox Code Playgroud)

matlab linear-algebra

12
推荐指数
2
解决办法
5万
查看次数

使用稀疏矩阵时的最佳实践

这个问题是基于这个问题的讨论.我之前一直在使用稀疏矩阵,我相信我使用它们的方式很有效.

我的问题是双重的:

在下面,A = full(S)其中S是稀疏矩阵.

访问稀疏矩阵中元素的"正确"方法是什么?

也就是说,稀疏等价物var = A(row, col)是什么?

我对这个话题的看法:你不会做任何不同的事情.var = S(row, col)尽可能高效.我在这方面受到了以下解释的挑战:

按照你所说的方式访问第2行和第2列的元素,S(2,2)与添加新元素相同:var = S(2,2)=> A = full(S)=> var = A(2,2)=> S = sparse(A) => 4.

这句话真的可以说对吗?

将元素添加到稀疏矩阵的"正确"方法是什么?

也就是说,稀疏等价物会A(row, col) = var是什么?(假设A(row, col) == 0开始)

众所周知,A(row, col) = var对于大型稀疏矩阵来说,简单地做就很慢.从文档:

如果要更改此矩阵中的值,可能会尝试使用相同的索引:

B(3,1)= 42; %此代码确实有效,但速度很慢.

我对这个主题的看法:当使用稀疏矩阵时,你经常从向量开始并使用它们以这种方式创建矩阵:S = sparse(i,j,s,m,n).当然,您也可以像这样创建它:S = sparse(A)或者sprand(m,n,density) …

performance benchmarking matlab sparse-matrix

12
推荐指数
2
解决办法
1498
查看次数

设置窗口/图片标题

我有:

img = imread('pic.jpg','jpg');
r = img(:,:,1);
g = img(:,:,2);
b = img(:,:,3);

figure, imshow(r);
figure, imshow(g);
figure, imshow(b);
Run Code Online (Sandbox Code Playgroud)

如何在每张图片上设置标题?

matlab image title

11
推荐指数
1
解决办法
2万
查看次数

从Julia中的文本文件中读取数据矩阵

我有包含矩阵的文本文件.我想把它作为矩阵在朱莉娅中阅读.

文本文件如下:

0 0 0 0 0 0 0
1 0 0 0 0 0 0
1 0 0 0 0 0 1
1 0 0 0 1 1 0
Run Code Online (Sandbox Code Playgroud)

在matlab中,您可以执行以下操作来创建矩阵M:

file='name.txt';
[M] = load(file);
Run Code Online (Sandbox Code Playgroud)

如何在朱莉娅做同样的事情?

input matrix file-read julia

9
推荐指数
1
解决办法
6285
查看次数