【发布时间】:2019-11-04 03:02:07
【问题描述】:
我想在 MATLAB 中创建一个矩阵(n x n,n 为奇数),其中心元素固定,其周围元素增加/减少某个常数值。例如:
我的中心元素为 0,周围的元素递减 0.1。从哪里开始,我几乎是空白的。非常感谢您的时间和帮助。
【问题讨论】:
我想在 MATLAB 中创建一个矩阵(n x n,n 为奇数),其中心元素固定,其周围元素增加/减少某个常数值。例如:
我的中心元素为 0,周围的元素递减 0.1。从哪里开始,我几乎是空白的。非常感谢您的时间和帮助。
【问题讨论】:
这种替代方法似乎比for 循环快一些。
n = 7; % size
vector = -abs((1-n)/2:(n-1)/2)/10; % entries in middle row/column
x = min(vector,vector.') % final result
【讨论】:
% works for only odd numbers as your requirement
n = 5; % matrix size
r = (n-1)/2; % surrounding rows
x = zeros(n); % array initialization
c = r-1:-1:0;
% assigning values
for i = 1:r
x([1+c(i), end-c(i)], :) = -i/10;
x(:,[1+c(i), end-c(i)]) = -i/10;
end
x % final matrix
【讨论】: