I have 32 column matrices of different names to be added separately. Is it possible to write a loop to do it instead of writing Sum1 = sum(VarName2)... and so on for 32 matrices?
I have matrices named VarName2, VarName3, ..., VarName33. I tried using the following loop;
for i = 1:32
sum(i)= sum(VarName(i));
end
and it returned the error "Undefined function or variable 'VarName'". So, needed help with this.

 Akzeptierte Antwort

Niels
Niels am 3 Feb. 2017
Bearbeitet: Niels am 3 Feb. 2017

0 Stimmen

final_sum=0;
for i= 1:32 % splitted command as string: sum(VarNamei)
final_sum=final_sum + evalin('base', ['sum(VarName', num2str(i) ,')']);
end
the sum of all vectors (if sum is used on a matrix, the result will be a row vector) ...
just tell me if it works, i had no problem using it.

3 Kommentare

Niels
Niels am 3 Feb. 2017
Bearbeitet: Niels am 3 Feb. 2017
not calling any indices, you must have changed something in the code... if they run from 2:32 why did you change it to i=2:33?
i created VarName2 ... VarName33 and run the code without error.
what is the size of your matrices VarName2 and so one
chnged the code so that final_sum is a 32x1 vector where final_sum(i) contains the sum of VarName2+...VarNamei
final_sum = zeros(32,1);
final_sum(1) = VarName2;
for i= 3:33 % splitted command as string: sum(VarNamei)
final_sum(i-1) = final_sum(i-2) + evalin('base', ['sum(VarName', num2str(i) ,')']);
end
Thank You, it worked!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Community Treasure Hunt

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

Start Hunting!

Translated by