Store sets of values as indices in a matrix?
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
BOB
el 10 de Sept. de 2018
Comentada: BOB
el 10 de Sept. de 2018
Hi,
I have a function which produces a set of horizontal and vertical graph axes intercepts. There are 120 sets of these intercepts:
for Z = 1:120
hrz = hix(x(:,Z),mb(:,Z))'; %[X Y] Matrix of horizontal intercepts
vrt = vix(y(:,Z),mb(:,Z))'; %[X Y] Matrix of vertical intercepts
end
I want to store each of these sets of intercepts in a matrix, i.e. I want to be able to call the second set of intercepts by simply calling matrix(2).
Is anyone aware of a way to achieve this?
Thanks
0 comentarios
Respuesta aceptada
Guillaume
el 10 de Sept. de 2018
I'm assuming that hix and vix are functions, and I'm assuming that for each pair of vector input, they each return a vector of the same size as the input. In which case,
hrz = zeros(size(x)); %predeclare output matrix
vrt = zeros(size(x));
for Z = 1:120
hrz(:, Z) = hix(x(:, Z), mb(:, Z));
vrt(:, Z) = vix(y(:, Z), mb(:, Z));
end
6 comentarios
Guillaume
el 10 de Sept. de 2018
store the different length vector of each iteration of the loop in a single matrix.
Ah! That needed explaining in the question. By definition, a matrix has the same number of rows/columns for each column/row. So you can't store results of varying length in a matrix unless you pad the shorter ones (which is rarely a good approach).
hrz = cell(1, size(x, 2)); %preallocate output
vrt = cell(1, size(x, 2));
for Z = 1:size(x, 2) %better not to hardcode the size
hrz{Z} = hix(x(:, Z), mb(:, Z));
vrt{Z} = vix(y(:, Z), mb(:, Z));
end
Más respuestas (0)
Ver también
Categorías
Más información sobre Logical 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!