cell array or matrix for complex subtraction calculation

4 Ansichten (letzte 30 Tage)
AA
AA am 29 Sep. 2014
Kommentiert: AA am 7 Okt. 2014
Hi, I used excel to import a table (table B) which has 24 columns and 200000 rows. I have another table (table A) which has only one column and 24 rows. I want to subtract table A from table B in such a manner that the first 24 rows of each column (table B) are subtracted from table A, then the next consecutive rows of table B are subtracted from table A, then the next consecutive rows and so on until all 200000 rows are completed. The example below illustrates what I want to do:
row 0-24 from table B minus 24 rows from Table A row 25-49 from table B minus 24 rows from Table A and so on.
the subtract should be done in such a manner that I get an absolute value.
1) How shall I import the files? Matlab offers many options: matrices, vectors, cell arrays, table format 2) Shall I use a command or a script to run this calculation and how do I write the command or script? 3) I have many table Bs' which are named MM30 to MM120. So 90 different tables Bs' and I want a loop that performs this complex calculation between table A and all table Bs.
I really appreciate your help.
  2 Kommentare
Andrei Bobrov
Andrei Bobrov am 29 Sep. 2014
What is M30 - .mat, .xls or .txt - file or variable of mat - file.
AA
AA am 29 Sep. 2014
M30 is an xlsb excel file. I have imported it into matlab. I do not know which format I should import it as. Matrix, vector, table or cell array?

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Andrei Bobrov
Andrei Bobrov am 29 Sep. 2014
Bearbeitet: Andrei Bobrov am 29 Sep. 2014
s = size(B);
s2 = numel(A);
k = ceil(s(1)/s2);
out = [B;nan(mod(-s(1),s2),s(2))] - kron(ones(k,s(2)),A);
% or out = [B;nan(mod(-s(1),s2),s(2))] - repmat(A,k,s(2));
one way
cd path/to/your/dir % here path to dir where your xlsx - files
n = dir('MM*.xlsb');
n1 = {n.name};
nn = numel(n);
out = cell(nn,1);
s2 = numel(A);
for ii = 1:nn
B = xlsread(n1{ii});
s = size(B);
k = ceil(s(1)/s2);
out{ii} = [B;nan(mod(-s(1),s2),s(2))] - repmat(A,k,s(2));
end
  5 Kommentare
AA
AA am 7 Okt. 2014
sorry for asking this question but do i type this in the command window or script/editor?
AA
AA am 7 Okt. 2014
and also in which folder do the files get saved? i should get 90 different files as there are 90 different tables. thanks a lot

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Tables finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by