4

我正在尝试创建一个低于阈值的数字数组(转换为字符串),对于我当前的测试,我使用的是 0.5。我需要在我的阈值以上或以下的表格的每个值的字体都涂成红色,在我当前的代码中,我只使用 2 列,但我将使用超过 10 列。这是我现在的代码它仅以红色显示高于 0.5 的数字值,但不显示低于 0.5 的数字(它们应该为黑色)。对于变量的错误命名,我很抱歉,我只是在测试实现这一点。帮助将不胜感激。

TTT = rand(30,2);
for u = 1:2

PPP = TTT(1:30, u:u);

   RRR = ( PPP(:) > .5);

   AAA = reshape(strtrim(cellstr(num2str(TTT(:)))), size(TTT));

   QQQQ(RRR, u) = strcat(...
   '<html><span style="color: #FF0000; font-weight: bold;">', ...
    AAA(RRR, u), ...
   '</span></html>');


end
%# create table
f = figure;
h = uitable('Parent',f, 'Units','normalized', 'Position',[0.05 0.05 0.9 0.9]);

%# set table data
set(h, 'Data',QQQQ) 
4

1 回答 1

3

您没有填写 中的所有值QQQQ,只有那些将是红色的值。其余的(应该是黑色的)保留为空单元格,因此它们不显示。

要纠正此问题,您需要初始化QQQQAAA然后修改相关单元格的颜色。所以,添加

AAA = reshape(strtrim(cellstr(num2str(TTT(:)))), size(TTT));
QQQQ = AAA;

就在for循环之前,并从循环中删除该AAA = reshape...行。那是:

TTT = rand(30,2);
AAA = reshape(strtrim(cellstr(num2str(TTT(:)))), size(TTT));
QQQQ = AAA;
for u = 1:2
   PPP = TTT(1:30, u:u);
   RRR = ( PPP(:) > .5);
   QQQQ(RRR, u) = strcat(...
      '<html><span style="color: #FF0000; font-weight: bold;">', ...
      AAA(RRR, u), ...
      '</span></html>');
end

%# create table
f = figure;
h = uitable('Parent',f, 'Units','normalized', 'Position',[0.05 0.05 0.9 0.9]);

%# set table data
set(h, 'Data',QQQQ) 
于 2013-12-13T23:48:31.203 回答