假设我有一个像这样的矢量:
A = [101:105]
Run Code Online (Sandbox Code Playgroud)
这是真的:
[ 101, 102, 103, 104, 105 ]
Run Code Online (Sandbox Code Playgroud)
我只想使用矢量/矩阵函数和运算符来生成矩阵:
101 102 103 104 105
102 103 104 105 0
103 104 105 0 0
104 105 0 0 0
105 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
或以下矩阵:
101 102 103 104 105
0 101 102 103 104
0 0 101 102 103
0 0 0 101 102
0 0 0 0 101
Run Code Online (Sandbox Code Playgroud)
任何人的想法?
(我在MATLAB中非常新手,但我一直背负着这些东西...)
我有一个7*1的矢量a = (1:7).'.我想A从矢量形成一个大小为4*4 的矩阵,使得形成矩阵的反对角线a的元素如下:aA
A = [1 2 3 4;
2 3 4 5;
3 4 5 6;
4 5 6 7]
Run Code Online (Sandbox Code Playgroud)
我希望这适用于一般a,而不仅仅是元素是连续整数.
我感谢任何帮助.
我有一个b包含30个条目的向量.
我想避免使用for循环来构造这样的矩阵:
其中b_i是i向量的第n个条目b.
例如,定义向量
b = [2 6 -7 3 1 -4 -1 1 11 8 -4 9 2 0 2 -1 0 4 4 4 2 -4 2 5 1 3 2 -1 1 -2]
Run Code Online (Sandbox Code Playgroud)
我尝试使用for循环的地方是:
A = zeros(5,5);
for i = 1:5
A(i) = b(i+5);
A(i+5) = b(i+6);
A(i+10) = b(i+7);
A(i+15) = b(i+8);
A(i+20) = b(i+9);
end
Run Code Online (Sandbox Code Playgroud)
结果是
有没有更快更通用的方法来生成这个矩阵?