在 Matlab 中使用 `spy` 对更小的值赋予更大的权重?

Greater weight to smaller values using `spy` in Matlab?

我是 MatLab 的新手,我有一个 table 的几百个变量。我知道较小的变量比 table 中的较大变量具有更大的重要性,并希望我绘制的稀疏矩阵来说明这一点。与其说是 lim approaches 0,不如说是 lim approaches 1,因为我知道最重要的值都接近 1。我是否只取该矩阵的逆矩阵?

请注意,spy 是一种可视化矩阵稀疏模式的方法,但不会让您可视化该值。为此,imagesc 是一个很好的候选人。

获得有关该问题的更多信息会有所帮助,但这里有一种方法可以说明接近 1 的值的重要性。

% Generate a random 10x10 matrix with 50% sparsity in [0,9]
x = 9*sprand(10,10,0.5);
% Add 1 to non-zero elements so they are in the range [1,10]
x = spfun(@(a) a+1, x);
% Visualize this matrix
figure(1); imagesc(x); colorbar; colormap('gray');

% Create the "importance matrix", which inverts non-zero values.
% The non-zero elements will now be in the range [1/10,1]
y = spfun(@(a) 1./a, x);
% Visualize this matrix
figure(2); imagesc(y); colorbar; colormap('gray');

编辑地址评论:

% If you want to see values that are exactly 1, you can use
y = spfun(@(a) a==1, x);
% If you want the inverse distance from 1, use
y = spfun(@(a) 1./(abs(a-1)+1), x);