matlab - 在matlab中使用多个输入按列应用函数
问题描述
使用多列作为参数在矩阵上应用函数,以应用具有多个输入的函数。
A = [1 2 3];
B = [4 5 6];
C = [7 8 9];
% This is the function I want use,
bsxfun(@(x,y,z) 1/(sqrt(2*pi*z)) * exp((-(x-y).^2)/(2*z)), A, B, C)
但不起作用,仅适用于两个输入:
bsxfun(@(x,y) x+y, A, B)
bsxfun 的错误输出是:
error: Invalid call to bsxfun. Correct usage is:
-- bsxfun (F, A, B)
这说明我不能用超过 2 个输入来做到这一点..
该函数的预期计算基本上是:
[1/(sqrt(2*pi*C1))*exp((-(A1-B1).^2)/(2*C1))
1/(sqrt(2*pi*C2))*exp((-(A2-B2).^2)/(2*C2))
1/(sqrt(2*pi*C3))*exp((-(A3-B3).^2)/(2*C3))]
分别是 NA1,B1,C1
的第一个元素是 N 向量的元素数(具有相同的长度)A,B,C
result = [ 0.079 0.08 0.08 ]
解决方案
你不需要bsxfun
这里。您只需要适当地定义函数句柄。
f = @(x,y,z) 1./(sqrt(2*pi*z)).*exp((-(x-y).^2)./(2*z));
现在您的预期结果是:
f(A,B,C)
推荐阅读
- python - 使用 sklearn.cluster Kmeans 时出现内存错误
- python - 如何在 python-docx 中包含多页表的页面上添加不同的页脚?
- string - 如何在数据框中的多个列上应用列表理解?
- c# - EF Core 一对多并发冲突不会抛出 DBConcurrencyException
- android - 如何从活动切换到片段
- python - 用于扩展变量转换的 Pythonic 语法(多个冗长的方法调用)
- angular - 如何在primeng数据表中逐行查找页码
- spring-boot - 如何使会话长度持续更长的时间?
- javascript - 如何使用 Vuetify 网格在 v-for 循环中显示商店项目?
- excel - 在 Excel 中将形状添加到水平条形图的末尾