我从循环世界(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)
也许,它只是语法糖,这就是全部,但仍然有用的知识.
我有一个358个数字的向量.我想对这个向量进行数值积分,但我不知道这个向量的功能.
我发现我们可以使用trapz或quad,但我真的不明白如何在没有函数的情况下进行集成.
我在MATLAB中绘制一个简单的条形图.问题是,x = 0处的值使y轴部分消失.有没有办法将y轴置于前面而不是隐藏在x = 0的y值之间?有什么选择我可以确保y轴总是在前面吗?
我有三个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)
我们假设我们有一个类似的向量
x = -1:0.05:1;
ids = randperm(length(x));
x = x(ids(1:20));
Run Code Online (Sandbox Code Playgroud)
我想以x某种惯用的方式计算元素之间的最大距离.迭代所有可能x的元素组合会很容易,但我觉得有一种方法可以用一些疯狂但惯用的方式用MATLAB的内置函数来完成它.
在MATLAB,Maple或Mathematica中是否有这样做的包?
matlab wolfram-mathematica matrix maple matrix-multiplication
这是我的代码:
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'类型的输入参数.
如何创建这样的矢量:
a = [a_1;a_2;...,a_n];
aNew = [a;a.^2;a.^3;...;a.^T].
Run Code Online (Sandbox Code Playgroud)
是否可以在没有循环的情况下创建一个新的?
当使用MATLAB Mapping工具箱中的worldmap.m时,背景(又名海洋)的默认颜色为"none".如何将其更改为其他颜色?
h = worldmap('World')
Run Code Online (Sandbox Code Playgroud) 给出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).