store multiple outputs into one matrix
17 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
My code currently produces 14 individual variables (x1-7 and y1-7), I am currently plotting these on a graph using hold on statements.
Is there a way to save these into 2 7x1 doubles, one for x variables and one for y variables so I can just plot these against each other?
file = dir('ATF_0.csv'); %read the files into matlab
num_files = length(file); %record how many files have been found
T = table2array(readtable(file.name)); %read in the values
T = T(T(:,6)<=-0.07,:);
%s1
S1 = T(:,5) >= 0.14 & T(:,5) <= 0.149;
TS1 = T(S1, :);
[y1, idx1] = max(TS1(:, 6));
x1 = TS1(idx1, 5);
%s2
S2 = T(:,5)>= 0.13 & T(:,5) <= 0.139;
TS2 = T(S2, :);
[y2, idx2] = max(TS2(:, 6));
x2 = TS2(idx2, 5);
%s3
S3 = T(:,5)>= 0.121 & T(:,5) <= 0.129;
TS3 = T(S3, :);
[y3, idx3] = max(TS3(:, 6));
x3 = TS3(idx3, 5);
%s4
S4 = T(:,5)>= 0.11 & T(:,5) <= 0.12
TS4 = T(S4, :);
[y4, idx4] = max(TS4(:, 6));
x4 = T(idx4,5);
%s5
S5 = T(:,5)>= 0.1 & T(:,5) <= 0.109
TS5 = T(S5, :);
[y5, idx5] = max(TS5(:, 6));
x5 = TS5(idx5, 5);
%s6
S6 = T(:,5)>= 0.09 & T(:,5) <= 0.099
TS6 = T(S6, :);
[y6, idx6] = max(TS6(:, 6));
x6 = TS6(idx6, 5);
%s7
S7 = T(:,5)>= 0.08 & T(:,5) <= 0.089
TS7 = T(S7, :);
[y7, idx7] = max(TS7(:, 6));
x7 = TS7 (idx7, 5);
0 comentarios
Respuestas (1)
Chris
el 22 de Oct. de 2021
Arrays with compatible dimensions can be concatenated using either square brackets or the cat() function.
In this case, it looks like your variables are all 1x1 arrays, so:
x = [x1; x2; x3; x4; x5; x6; x7];
would likely be sufficient to create a 7x1.
For a row vector instead of a column vector, use commas instead of semicolons.
2 comentarios
Chris
el 22 de Oct. de 2021
Editada: Chris
el 22 de Oct. de 2021
Yes.
You could initialize x as an empty array:
x = []
and inside the for loop, concatenate it to itself.
x = [x; new_x];
another method:
x(end+1) = new_x;
Similarly for y.
I'm not sure whether this entirely answers your question. If you're trying to get x and y columns in the same array, that's also possible:
xy = [];
for ...
xy = [xy; new_x, new_y];
Ver también
Categorías
Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!