pi_pdf = @(x) mvnpdf(x,muX,diag(sigmaX));变成函数句柄
时间: 2023-10-21 14:07:20 浏览: 71
可以这样转换为函数句柄:
```matlab
muX = [1 2 3];
sigmaX = [0.5 0 0; 0 1 0; 0 0 2];
pi_pdf = @(x) mvnpdf(x,muX,diag(sigmaX));
```
其中,`@(x)` 表示定义一个匿名函数,`x` 为输入参数,`mvnpdf` 是多元高斯分布的概率密度函数,`muX` 是均值向量,`diag(sigmaX)` 返回对角线元素组成的向量,表示协方差矩阵的对角线元素。
相关问题
for kk = 1:n pi_pdf = @(x) mvnpdf(x,muX(kk),diag(sigmaX(kk))); end,变成函数句柄
在 `for` 循环中定义匿名函数时,需要注意当 `kk=n` 时,函数句柄 `pi_pdf` 会被覆盖,只保留最后一次赋值。如果需要保留每一次赋值,可以将每个函数句柄保存到一个单独的变量中。可以这样转换为函数句柄:
```matlab
muX = [1 2 3];
sigmaX = [0.5 0 0; 0 1 0; 0 0 2];
pi_pdf_cell = cell(n, 1); % 保存每个函数句柄的单元格数组
for kk = 1:n
pi_pdf_cell{kk} = @(x) mvnpdf(x, muX(kk), diag(sigmaX(kk)));
end
```
其中,`cell(n, 1)` 创建一个大小为 `n x 1` 的单元格数组,`pi_pdf_cell{kk}` 表示获取第 `kk` 个单元格的值,也就是对应的函数句柄。
for kk = 1:n pi_pdf = @(x) normpdf(x,muX(kk),diag(sigmaX(kk))); end 变成函数句柄
与上一个问题类似,在 `for` 循环中定义匿名函数时,需要注意当 `kk=n` 时,函数句柄 `pi_pdf` 会被覆盖,只保留最后一次赋值。如果需要保留每一次赋值,可以将每个函数句柄保存到一个单独的变量中。可以这样转换为函数句柄:
```matlab
muX = [1 2 3];
sigmaX = [0.5 0 0; 0 1 0; 0 0 2];
pi_pdf_cell = cell(n, 1); % 保存每个函数句柄的单元格数组
for kk = 1:n
pi_pdf_cell{kk} = @(x) normpdf(x, muX(kk), sqrt(sigmaX(kk)));
end
```
其中,`cell(n, 1)` 创建一个大小为 `n x 1` 的单元格数组,`pi_pdf_cell{kk}` 表示获取第 `kk` 个单元格的值,也就是对应的函数句柄。注意到这里将 `sigmaX(kk)` 的对角线元素开根号,以保证输入到 `normpdf` 的标准差是正确的。
阅读全文