Printing sentences using cell arrays
Ältere Kommentare anzeigen
Given: 3 names, 3 verbs, 3 nouns; how to initalize a cell array.
Find: I need to print random elements from each of the above terms in a cell array to make a sentence.
Issue: I can initialize the cell arrays, (I think), but I am struggling to print the sentences in the command window...
My Solution: I initialize a cell array of 1 row and 3 columns, but I'm struggling to figure out how to randomize and print them.
C=cell(1,3);
Names={'Harry','Xavier','Sue'};
Verbs={'loves','eats','throws'};
Nouns={'baseballs','rocks','pizza'};
% I tried creating a variable rand, and stating rand=rand(C(Names, Verbs,
% Nouns)) such that it filled the empty cell array with random elements
% from the names, verbs, and nouns and got the error !!!Unable to use a value of type cell as an index.
% I'd then I think use the fprintf function to display the value of C?
Akzeptierte Antwort
Weitere Antworten (1)
Here's a way to generate multiple random sentences at once:
Names={'Harry','Xavier','Sue','Howard','Fred'}; % adding two names and one noun
Verbs={'loves','eats','throws'}; % to show that these don't all
Nouns={'baseballs','rocks','pizza','iPads'}; % have to be the same length
% number of sentences to print:
N = 12;
C = [ ...
Names(randi(end,[1 N])); ...
Verbs(randi(end,[1 N])); ...
Nouns(randi(end,[1 N])); ...
]
fprintf('%s %s %s.\n',C{:})
And here's one way to generate all possible sentences of the specified form:
T = combinations(Names,Verbs,Nouns)
C = table2array(T).';
fprintf('%s %s %s.\n',C{:})
7 Kommentare
Spaceman
am 15 Apr. 2024
Voss
am 15 Apr. 2024
"could I change N in your first example to 1?"
I think so. Why don't you try it and see what happens?
Spaceman
am 15 Apr. 2024
Voss
am 16 Apr. 2024
Perfect
Spaceman
am 16 Apr. 2024
Voss
am 16 Apr. 2024
You're welcome!
Spaceman
am 24 Apr. 2024
Kategorien
Mehr zu Cell Arrays finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!