【发布时间】:2016-05-20 19:27:00
【问题描述】:
【问题讨论】:
标签: matlab matlab-figure
【问题讨论】:
标签: matlab matlab-figure
删除所有空格后,找到'0.00'并再次用空格替换它
idx = find(strcmp(textStrings(:), '0.00'));
textStrings(idx) = {' '};
完整的代码如下:
mat = rand(5); %# A 5-by-5 matrix of random values from 0 to 1
mat(3,3) = 0; %# To illustrate
mat(5,2) = 0; %# To illustrate
imagesc(mat); %# Create a colored plot of the matrix values
colormap(flipud(gray)); %# Change the colormap to gray (so higher values are
%# black and lower values are white)
textStrings = num2str(mat(:),'%0.2f'); %# Create strings from the matrix values
textStrings = strtrim(cellstr(textStrings)); %# Remove any space padding
%% ## New code: ###
idx = find(strcmp(textStrings(:), '0.00'));
textStrings(idx) = {' '};
%% ################
[x,y] = meshgrid(1:5); %# Create x and y coordinates for the strings
hStrings = text(x(:),y(:),textStrings(:),... %# Plot the strings
'HorizontalAlignment','center');
midValue = mean(get(gca,'CLim')); %# Get the middle value of the color range
textColors = repmat(mat(:) > midValue,1,3); %# Choose white or black for the
%# text color of the strings so
%# they can be easily seen over
%# the background color
set(hStrings,{'Color'},num2cell(textColors,2)); %# Change the text colors
set(gca,'XTick',1:5,... %# Change the axes tick marks
'XTickLabel',{'A','B','C','D','E'},... %# and tick labels
'YTick',1:5,...
'YTickLabel',{'A','B','C','D','E'},...
'TickLength',[0 0]);
这给出了:
【讨论】:
这行得通吗?
在定义textStrings 之后和转换为单元格之前,对i 和j(空间维度)进行循环,并设置
textStrings(i,j,1:4)=' ';
取决于mat(i,j) 是否真的接近0.00 使用if-else 语句
【讨论】:
a=rand(3,1); a a=num2str(a,'%0.2f'); a a(2,:)=' '; a a= strtrim(cellstr(a)); a x=[1 2 3]; y=[4 5 6]; plot(x,y,'+'); hold on; text(x(:),y(:),a(:)); xlim([0 4]); ylim([3 7]);
find 和 strcmp :P
textStrings(i,j,1:4) = ' '; 暗示 textStrings 是一个 3D 矩阵。
num2str(mat(:)) 将矩阵转换为字符串的列向量。我的坏 :P i n j 必须转换为列维度