matlab - 如何在 MATLAB 中不使用 for 循环生成这个 3-D 矩阵?

标签 matlab matrix

我想生成一个 N×N×3 矩阵 A这样A(:,:,i) = eye(n)*i 。如何在不使用 for 循环(即以矢量化方式)的情况下做到这一点?

最佳答案

实现此目的的一种方法是使用函数 KRONRESHAPE :

>> N = 4;
>> A = reshape(kron(1:3,eye(N)),[N N 3])

A(:,:,1) =

     1     0     0     0
     0     1     0     0
     0     0     1     0
     0     0     0     1

A(:,:,2) =

     2     0     0     0
     0     2     0     0
     0     0     2     0
     0     0     0     2

A(:,:,3) =

     3     0     0     0
     0     3     0     0
     0     0     3     0
     0     0     0     3

关于matlab - 如何在 MATLAB 中不使用 for 循环生成这个 3-D 矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4392021/

相关文章:

python - 如何找到网络矩阵(networkx)中n最大的边权重?

C - 数组内容交换

matlab - Matlab主成分回归(pcr)分析中的常数项

python - 将 MATLAB 中的 spdiags() 转换为 Python

arrays - 需要在Matlab中重置计数器变量

c++ - 如何将 Eigen::Quaternion<float> 转换为 Matrix4f?

algorithm - 如何根据强度值创建蒙版或检测图像部分?

arrays - 在 matlab 中计算 3 维元胞数组的均值

r - 如何从 R 或 matlab 中的原始数据和查找表创建新表?

matlab - A=[x; 是什么意思? y'] 在 Matlab 中是什么意思?