Info
Questa domanda è chiusa. Riaprila per modificarla o per rispondere.
Matrix creation issue concerning indexing
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Summary:
I need this function to take the data and build a matrix row by row.
Inputs:
m = 1
n = 2000
o = 2001
p = 4000
data = 11x1 structure containing 4000x1 arrays in each cell of data points
int = [0 3 0 0 3 0 0 3 0 0]
"int" codes designate whether stimulation is seen in the first or second interval period
Function:
function [patch] = matrix_buidler (m,n,o,p,data,int);
for i = 1:length(int);
if (int(i)==0)
a = data(i).num(:,1);
stim(i,:) = a(m:n);
% display(stim(1:10,1));
else
a = data(i).num(:,1);
stim(i,:) = a(o:p);
% display(stim(1:10,1));
end
patch=stim;
end
end
Error:
??? Index exceeds matrix dimensions.
Error in ==> matrix_builder at 5
stim(i,:) = a(m:n);
What I don't understand:
The length of int is the number of data files, so how is it possible for the index to exceed and since I'm building the matrix here, why is that even an issue?
0 Commenti
Risposte (1)
Walter Roberson
il 24 Mag 2015
You are getting that problem because the "n" you are passing to the routine exceeds the number of rows in some data(i).num(:,1) . One of the ways that could happen is if one of the data(i).num is a row vector instead of a column vector. You could generalize your routine by coding
a = data(i).num;
as that would handle both row vectors and column vectors. And of course you could put in verification tests such as
if n > numel(a)
fprintf(2, 'not as much data as expected at data(%d).num, has %d elements but requested subset was %d:%d\n', i, numel(a), m, n);
end
5 Commenti
Walter Roberson
il 25 Mag 2015
What does class(a) show? And it might be worth doing
arrayfun(@(K) class(data(K).dim), 1:length(data), 'Uniform', 0)
to check in case values are not consistent.
Questa domanda è chiusa.
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!