用Matlab替换空白值

时间:2016-06-14 15:59:02

标签: matlab plot

我找到了一些细胞解决方案,但没有使用Numberarrays。

问题很简单,我有一个Array a=(0,1,2,3,4,5,6,7),我想用“blankspace”更改每个其他值,就像这个a=(0,'',2,''...)一样,这样数组保持相同的长度,但只有其他值。

当我尝试这样的事情a(2:2:end)='';时 我得a=(0,2,4,6)长度不一样。

当我尝试a(2:2:end)=blanks(1);时 它几乎可以工作:),但不完全是,我得到a=(0,'32',2,'32',4,'32'...)

我知道实际上32意味着'空间'(ASCII)实际意味着它正常工作。然后我尝试使用它来设置我的TickLabel,但它将其解释为32,而不是像ASCII。

1 个答案:

答案 0 :(得分:2)

您不能在数字数组中引入空格作为条目。你只能引入数字。

如果您希望将其用作刻度标签,请转换为单元格数组,然后您可以设置一些单元格'内容到[](空):

a = [0 1 2 3 4 5 6 7]; % original vector
a = num2cell(a); % convert to cell
a(2:2:end) = {[]}; % set some cells' contents to []

x = 1:8; % x data for example plot
y = x.^2; % y data for example plot
plot(x, y) % x plot the graph
set(gca, 'xticklabels', a) % set x tick labels

enter image description here

要获得没有科学记数法的刻度标签,请使用适当格式的num2str

a = [0 1 2 3 4 5 6 7]*1e6; % original vector
a = num2cell(a); % convert to cell
a(2:2:end) = {[]}; % set some cells' contents to []
a = cellfun(@num2str, a, 'Uniformoutput', false); % convert each number to a string

x = [0 1 2 3 4 5 6 7]*1e6; % x data for example plot
y = x.^2; % y data for example plot
plot(x, y) % x plot the graph
set(gca, 'xticklabels', a) % set x tick labels