How to subtract symbol associated matrix columnwise

1 view (last 30 days)
A = [A; B; C; D]
B = [1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16]
% my desired output is
C =
A-1 A-2 A-3 A-4
B-5 B-6 B-7 B-8
C-9 C-10 C-11 C-12
D-13 D-14 D-15 D-16
Thanks alot!

Accepted Answer

ANKUR KUMAR
ANKUR KUMAR on 13 Jul 2021
Edited: ANKUR KUMAR on 13 Jul 2021
You cannot simply substract these two matrices, becasue B contains integers (double), and A has strings.
You need to convert B to strings, and then you can use cat function to get the desired output.
A = {'A','B', 'C', 'D'};
B = [1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16];
B_str=arrayfun(@num2str,B,'un',0);
C=arrayfun(@(index) strcat(A{index},'-',B_str(index,:)), 1:size(B,2),'uni',0);
output_matrix=cat(1,C{:})
output_matrix = 4×4 cell array
{'A-1' } {'A-2' } {'A-3' } {'A-4' } {'B-5' } {'B-6' } {'B-7' } {'B-8' } {'C-9' } {'C-10'} {'C-11'} {'C-12'} {'D-13'} {'D-14'} {'D-15'} {'D-16'}
  1 Comment
Vincent Ike
Vincent Ike on 13 Jul 2021
Thank you. You are very correct, although I was trying to relate the answer here to a question I asked ealier in https://www.mathworks.com/matlabcentral/answers/877563-solve-an-algebraic-matrix-equation. It is to solve a time dependent force function columnwise with A,B,C,D as the unknown variable, here converting the numeric to string may worsen my problem I think, cause I don't know much of MATLAB.

Sign in to comment.

More Answers (1)

Walter Roberson
Walter Roberson on 13 Jul 2021
syms A B C D
A1 = [A; B; C; D]
A1 = 
B = [1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16]
B = 4×4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
A1 - B
ans = 

Categories

Find more on Symbolic Math Toolbox in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!