Asked by Romain Gippa
on 18 Oct 2019

Hi,

This is my first question on mathworks. I apologize in advance if I am unclear.

I would like to make a for loop of 3 iterations. But my iterations need to be matrices (2000x2). To help you help me, here's what I would like to do, but I know it's not the right way :

A = importdata('CSTR3L_72rpm_50.txt', '\t');

B = importdata('CSTR3L_100rpm_50.txt', '\t');

C = importdata('CSTR3L_400rpm_50.txt', '\t');

injectiontime = [12, 150, 40];

i = 1;

for A:1:C

i = i+1;

A(:,1) = A(:,1) - injectiontime(i);

end

I have to treat a lot of data so it will be really helpfull to me !

Thank you very much for your interest

Answer by Baium
on 18 Oct 2019

Edited by Baium
on 18 Oct 2019

Accepted Answer

I am also confused about what you want to do. You said you have multiple data sets. If you want to subtract one injectionTime element at a time from corresponding variable, it would be a similar way to Bob's.

z = [A, B, C, ...];

injectionTime = [12, 150, 40]

for i = 1:size(z, 2)

z(:, i) = z(:, i) - injectionTime(1, i);

end

If you want A, B, C, .., N each to be subtracted by ALL injectionTime elements,

z = [A, B, C, ...];

c = cell2mat(arrayfun(@(x) bsxfun(@minus, z, injectionTime(x)), 1:numel(injectionTime), 'UniformOutput', false));

Romain Gippa
on 19 Oct 2019

Thank you !

I didn't know we could put matrices as element (in z here).

However, I had to rush so I did my code the rough way, without loops.

A = importdata('CSTR3L_72rpm_50.txt', '\t');

B = importdata('CSTR3L_100rpm_50.txt', '\t');

C = importdata('CSTR3L_400rpm_50.txt', '\t');

injectionTime = [25, 1160, 18];

Acorr = size(A);

Bcorr = size(B);

Ccorr = size(C);

for i = 1:length(A)-injectionTime(1)

Acorr(i,1) = A(i+injectionTime(1),1) - injectionTime(1);

Acorr(i,2) = A(i+injectionTime(1),2);

end

for i = 1:length(B)-injectionTime(2)

Bcorr(i,1) = B(i+injectionTime(2),1) - injectionTime(2);

Bcorr(i,2) = B(i+injectionTime(2),2);

end

for i = 1:length(C)-injectionTime(3)

Ccorr(i,1) = C(i+injectionTime(3),1) - injectionTime(3);

Ccorr(i,2) = C(i+injectionTime(3),2);

end

I will try to merge the 3 loops in one as you shown.

Sign in to comment.

Answer by Bob Nbob
on 18 Oct 2019

I'm confused what you're trying to do.

From the psuedo code you wrote it looks like you're trying to loop through each of the arrays A, B, and C, and subtract the corresponding value of injectiontime from the first column of each array. This is how I would accomplish that in a more common code.

A = importdata('CSTR3L_72rpm_50.txt', '\t');

B = importdata('CSTR3L_100rpm_50.txt', '\t');

C = importdata('CSTR3L_400rpm_50.txt', '\t');

injectiontime = [12, 150, 40];

A(:,1) = A(:,1)-injectiontime(1);

B(:,1) = B(:,1)-injectiontime(2);

C(:,1) = C(:,1)-injectiontime(3);

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 0 Comments

Sign in to comment.