# MATLAB: How to add some symbols into a matrix

In fact , I have a Matrix like X =
0 5.2 4.8 28.8
0 0 1.0 33.8
0 0 0 33.4
0 0 0 0
I would like to create like this
0 5.2 4.8 28.8
NaN 0 1.08 33.8
NaN NaN 0 33.4
NaN NaN NaN 0
I wrote something like this, but it does not work very well. because I would like to keep the first column and first row zero value, the second column second row zero value and so on
[m,n]=size (X) for i=1:m; for j=1:n; if X(i,j)==0 X(i,j)= NaN ; end end end

• It depends on what you want to do with this matrix. If you just want it to be displayed nicely:
classdef partmat < double  methods    function obj = partmat(data)      if nargin < 1        data = [];      end      validateattributes(data, {'numeric'}, {'2d'})      obj = obj@double(data);    end        function disp(obj)      for irow = 1:size(obj, 1)        for icolumn = 1:size(obj, 2)          if ~isnan(obj(irow, icolumn))            x = num2str(obj(irow, icolumn));          else            x = '--';          end          fprintf(['\t', x]);        end        fprintf('\n');      end    end  endend
Example:
>> x = partmat(magic(5))
x =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
>> x(3) = nan
x =
17 24 1 8 15
23 5 7 14 16
-- 6 13 20 22
10 12 19 21 3
11 18 25 2 9
If you want to get even fancier you could overload subsassgn and allow notation like
x(5) = '--'