2010-09-04 5 views
0
clc 
clear all 
ii=1; 

S =cell(size(30,1)); % cell size. 


for ii=1:1:3  
    rand_id= rand(1,1) *3; % Randomly generte a number between 1 to 3. 

    if (rand_id<1) 
     rand_id=1; % 0 is ommitted. 
    else rand_id=floor(rand_id); 
    end 

% rand_id will be used to open a previously saved file randomly. 

    if (rand_id==1) 
     f_id_1=fopen('C1.txt','r'); % Open and read a file. 
    elseif (rand_id==2) 
     f_id_1=fopen('C2.txt','r'); % Open and read a file. 
    end 

% saning the file to read the text. 
    events_1=textscan(f_id_1, '%s', 'Delimiter', '\n'); 
    fclose(f_id_1); 
    events_1=events_1{1}; % saving the text. 
    rand_event=events_1{randi(numel(events_1))}; % selects one text randomly. 

    S{ii}=rand_event; 
end 

J'ai écrit le code ci-dessus pour sélectionner un fichier de manière aléatoire. Le fichier contient le nombre de phrases. Mon but est de choisir au hasard une phrase. Je l'ai fait. Maintenant, mon problème est que je ne peux pas enregistrer toutes les phrases choisies dans la boucle.Sortie de chaîne dans MATLAB

Lorsque je déclare S(ii)=rand_event Il indique une erreur. Quand j'essaye S(ii)=rand_event(ii) Il retourne seulement 1, 2, 3 caractères dans les trois boucles.

Aidez-nous s'il vous plaît.

+0

Apprenez à formater la partie code de la question. Pourquoi avez-vous supprimé la question d'origine? Il est difficile de comprendre maintenant de quoi il s'agit. Si vous avez de nouvelles informations à discuter, ou des changements de code base de réponses, ajoutez-le toujours à la question avec l'étiquette UPDATE. – yuk

+0

@ yuk. Je suis un newbee. Je suppose, je n'ai pas compris comment mettre à jour. J'ai édité le code. J'espère ne pas faire la même erreur. Merci d'avoir réussi. – Tinglin

+0

J'ai ajouté la description du problème pour donner un contexte à la question (vous pouvez l'éditer si nécessaire, mais ne le supprimez pas complètement) – Amro

Répondre

2
S(ii) 

est considérée comme une matrice avec des dimensions bien définies. Je suppose que vos 'phrases' ont une longueur différente. Une solution pourrait être d'utiliser un tableau de cellules.

S{ii}=rand_event 

Les matrices de cellules utilisent des accolades.

+0

Zellus, Merci. Oui, mes phrases ont des dimensions différentes. Quand j'utilise S (ii) = rand_event (ii), il stocke seulement le caractère des phrases conformément à ii. J'ai essayé S {ii} = rand_event. L'erreur est "Affectation du contenu de la cellule à un objet de tableau non-cellule". J'essaie de lire un peu à propos de cell_array. Des pensées? – Tinglin

+0

Juste essayé, S = cellule (taille (rand_event)); S {ii} = rand_event; Je ne suis en train de sortir que pour l'itération finale. Pourquoi ça? – Tinglin

+0

@ user437493: Je suppose que le code ci-dessus est placé dans un fichier m simple. Pendant l'exécution de vos variables de code, elles sont instanciées dans l'espace de travail matlab 'base'. Appeler clc au début de votre fichier va nettoyer votre fenêtre de commande, mais pas effacer vos variables. Ajoutez un "tout effacer" au début de votre fichier m. J'interprète le message d'erreur comme S instancié en tant que matrice, mais j'ai essayé d'y accéder en tant que tableau de cellules. – zellus

Questions connexes