Passing String from Cell Array to Matrix
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
The following code is producing the errors:
Matrix index is out of range for deletion.
names{s}(vec_missing(q)-q+1,:)=[];
The strings in the array are the names of four matrices (as an example). The vector vec_missing contains the integer values of the rows in the matrices I want to delete.
However, I have no idea why passing the string from the cell array is not working. I've tried searching the forum, but any help is appreciated:
names = {'Mary','Mark','Luke','John'};
for q=1:length(vec_missing);
for s=1:numel(names)
names{s}(vec_missing(q)-q+1,:)=[];
end
end
4 Commenti
dpb
il 15 Ago 2014
I wasn't dreaming you really intended that the names were intended to be the names of the arrays you intended the loop to act on. I'm w/ David Y; this is a bad idea and as the FAQ says, "don't do that!!!"
Risposte (1)
Gitesh Nandre
il 19 Ago 2014
I agree with David Young and dpb. You are using strings from 'names' cell array as names of variables for matrices. This is not possible without using 'eval' function. However, it is not recommended. As David suggested, here is a solution which makes use of cell array for storing matrices.
Mary = magic(3); %Creating sample matrices of dimension 3x3
Mark = magic(3);
Luke = magic(3);
John = magic(3);
vec_missing = [1 3]; % Need to delete fist and third row from each matrix
names = {Mary Mark Luke John}; %Storing above matrices in cell array
for i = 1:numel(names)
names{i}(vec_missing,:) = [];
end
0 Commenti
Vedere anche
Categorie
Scopri di più su Logical in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!