Returning Variables as Characters
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I have function such that
a= rand (1,10); % it generates random real numbers from 0 to 1
i=1:10;
if b(i)< 0.4;
b(i)= 'A';
else if
b(i) = 'B'
end
the purpose of this code is for example
b = 0.23 0.45 0.89 0.74 0.48 0.98 0.12 0.05 0.56 0.14
I want it to return as a result
b= A B B B B B A A B A
2 commentaires
Guillaume
le 21 Déc 2017
@Dogukan,
We really don't appreciate when the original poster edit their question away once they've got an answer. This is not a private consulting service. The answers we post are not just for you, they're intended to help anybody with the same issue. If you edit the question away, the answers become meaningless.
It also makes us a lot less likely to answer your questions in the future.
Thankfully, MathWorks doesn't like it either and have a policy of restoring questions edited away to their original state, so it's also pointless.
Réponses (2)
Stephen23
le 21 Déc 2017
Modifié(e) : Stephen23
le 21 Déc 2017
method one: character code:
>> b = char(66-(a<0.4))
b = ABBBBBAABA
method two: sprintf:
>> b = sprintf(' %c',66-(a<0.4))
b = A B B B B B A A B A
method three: indexing (char):
>> c = 'AB';
>> b = c(2-(a<0.4))
b = ABBBBBAABA
method four: indexing (cell):
>> c = {'A','B'}65_66
>> b = c(2-(a<0.4))
b = 'A' 'B' 'B' 'B' 'B' 'B' 'A' 'A' 'B' 'A'
method five: generate characters directly using randi:
>> char(randi([65,66],1,10))
ans = ABBBBBAABA
0 commentaires
Pawel Jastrzebski
le 21 Déc 2017
Modifié(e) : Pawel Jastrzebski
le 21 Déc 2017
clear all;
clc;
data = rand (1,10)
%logical vector to establish when datapoint is 'A' and 'B'
% Condition 1: 'A' if 'data <= 0.5'
% Condition 2: 'B' if 'data > 0.5'
logicValA = data <= 0.5;
logicValB = data > 0.5;
% Use logical vectors to separate 'data' into 'A's' and 'B's':
% 'newData' as 'char vector' → all values concatenated
newData(logicValA) = 'A'
newData(logicValB) = 'B'
% 'newData1' as 'cell array' → all values separated
newData1 = {}
newData1(logicValA) = {'A'}
newData1(logicValB) = {'B'}
2 commentaires
Walter Roberson
le 26 Déc 2017
A<B<C means to compare A and B first getting out 0 (false) or 1 (true), and then to compare that 0 or 1 to C. You need to test A<B&B<C
Voir également
Catégories
En savoir plus sur Logical dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!