my question is what is wrong with my code, the results should be in the first picture not the second.
    3 views (last 30 days)
  
       Show older comments
    
    jana nassereddine
 on 28 Sep 2021
  
    
    
    
    
    Commented: David Goodmanson
      
      
 on 30 Sep 2021
            D=zeros(6);
for row=1:6
    for col=1:6
        if col>row %upper right corner
            D(row,col)=0
        else if col==row %diagonal
                D(row,col)=0
        else if row>col  % bottom left corner
                if mod(row,2) ==0 && col==1
                    D(row,1)= row-1
                    if mod(row,2)==0 && mod(col,2) ==1   && col>=3 
                        D(row,col)= (row-1)*2
                    if mod(row,2) ==1 && mod(col,2) ==0      
                        D(row,col)= (row-1)*2
                    end
                    end
                end   
            end
        end
        end
    end
end


0 Comments
Accepted Answer
  David Goodmanson
      
      
 on 30 Sep 2021
        
      Edited: David Goodmanson
      
      
 on 30 Sep 2021
  
      Hi jana,
the problem is that the if statements
if mod(row,2)==0 && mod(col,2) ==1   && col>=3             % (b)   
and    
if mod(row,2) ==1 && mod(col,2) ==0                        % (c)
are contained within 
if mod(row,2) ==0 && col==1                                % (a)  
  .......
  .......  
end
and their conditions conflict with (a) so they never are implemented.  If for both (b) and (c) you change 'if' to 'elseif' and then get rid of two suddenly extraneous end statements at the end, it works. 
2 Comments
  David Goodmanson
      
      
 on 30 Sep 2021
				Hi jana, I forgot to mention that there is no need to do the for loops that set the upper right corner to zero, since your preallocation of D made them zero already.
More Answers (0)
See Also
Categories
				Find more on Matrix Decomposition in Help Center and File Exchange
			
	Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
