小编Mat*_*oug的帖子

无环函数调用Matlab/Octave中的向量/矩阵成员

我从循环世界(C等)进入矩阵世界

我想在向量/矩阵的每个单独成员上调用一个函数,并返回结果向量/矩阵.

这就是我目前的做法:

function retval = gauss(v, a, b, c)
  for i = 1:length(v)
    retval(i) = a*(e^(-(v(i)-b)*(v(i)-b)/(2*c*c)));
  endfor
endfunction
Run Code Online (Sandbox Code Playgroud)

用法示例:

octave:47> d=[1:1000];
octave:48> mycurve=gauss(d, 1, 500, 100);
Run Code Online (Sandbox Code Playgroud)

现在,关于MATLAB/Octave的所有建议都说:只要你发现自己使用循环并想出更好的方法,就停止.

因此,我的问题是:可以在向量/矩阵的每个成员上调用一个函数,并在不使用显式循环的情况下一次性将结果返回到新的向量/矩阵中吗?

那就是我在找这样的东西:

 function retval = newfun(v)
    retval = 42*(v^23); 
endfunction
Run Code Online (Sandbox Code Playgroud)

也许,它只是语法糖,这就是全部,但仍然有用的知识.

matlab matrix octave

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

如何在MATLAB中对矢量进行数值积分?

我有一个358个数字的向量.我想对这个向量进行数值积分,但我不知道这个向量的功能.

我发现我们可以使用trapz或quad,但我真的不明白如何在没有函数的情况下进行集成.

matlab numerical-integration

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

隐藏MATLAB条形图中的Y轴

我在MATLAB中绘制一个简单的条形图.问题是,x = 0处的值使y轴部分消失.有没有办法将y轴置于前面而不是隐藏在x = 0的y值之间?有什么选择我可以确保y轴总是在前面吗?

matlab

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

MATLAB:比较三个数组中的所有元素

我有三个1-d数组,其中元素是一些值,我想将一个数组中的每个元素与其他两个元素中的所有元素进行比较.

例如:

a=[2,4,6,8,12]
b=[1,3,5,9,10]
c=[3,5,8,11,15]
Run Code Online (Sandbox Code Playgroud)

我想知道不同数组中是否有相同的值(在这种情况下有3,5,8)

arrays matlab

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

在MATLAB中计算向量元素之间的最大距离

我们假设我们有一个类似的向量

x = -1:0.05:1;
ids = randperm(length(x));
x = x(ids(1:20));
Run Code Online (Sandbox Code Playgroud)

我想以x某种惯用的方式计算元素之间的最大距离.迭代所有可能x的元素组合会很容易,但我觉得有一种方法可以用一些疯狂但惯用的方式用MATLAB的内置函数来完成它.

matlab distance permutation max

3
推荐指数
1
解决办法
2888
查看次数

3
推荐指数
1
解决办法
2431
查看次数

为什么MATLAB中的数组饱和度为255?

这是我的代码:

arr = zeros(fx-10,1);
frm = frams(x).cdata;
for k=1:fx-10
    for i=1:10
        for j=1:fy
            arr(k) = arr(k)+ abs(frm(k+i-1,j)-model(i,j))
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

为什么数组最多只能接收255个值?

我试着定义:

 arr = zeros(fx-10,1,'int64');
Run Code Online (Sandbox Code Playgroud)

并且代码失败:

??? 未定义的函数或方法'plus'表示'int64'类型的输入参数.

matlab

3
推荐指数
1
解决办法
4998
查看次数

使用模式在MATLAB中创建向量

如何创建这样的矢量:

a = [a_1;a_2;...,a_n]; 
aNew = [a;a.^2;a.^3;...;a.^T].
Run Code Online (Sandbox Code Playgroud)

是否可以在没有循环的情况下创建一个新的?

math matlab vector

3
推荐指数
1
解决办法
963
查看次数

使用worldmap时更改图的背景颜色

当使用MATLAB Mapping工具箱中的worldmap.m时,背景(又名海洋)的默认颜色为"none".如何将其更改为其他颜色?

h = worldmap('World')
Run Code Online (Sandbox Code Playgroud)

mapping matlab

3
推荐指数
1
解决办法
2127
查看次数

为什么MATLAB本机函数cov(协方差矩阵计算)使用与我预期不同的除数?

给出M维和N个样本的数据矩阵数据,比方说,

data = randn(N, M);
Run Code Online (Sandbox Code Playgroud)

我可以计算协方差矩阵

data_mu = data - ones(N, 1)*mean(data);
cov_matrix = (data_mu'*data_mu)./N
Run Code Online (Sandbox Code Playgroud)

如果我使用原生MATLAB函数

cov_matrix2 = cov(data)
Run Code Online (Sandbox Code Playgroud)

这总是等于

cov_matrix = (data_mu'*data_mu)./(N-1)
Run Code Online (Sandbox Code Playgroud)

也就是说,分母是(N-1)少一个.

为什么??你能重现吗?这是一个错误?

我使用MATLAB版本7.6.0.324(2008).

matlab covariance

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