How to create string of text-objects
조회 수: 3 (최근 30일)
이전 댓글 표시
Hi, I have the following matrix as an output. I wouldlike to make a third column such that the rows corresponding to 1, i would like to write "paid" and the rows corresponding to 0 I would like to write "not paid" so that the resulting table should have three columns, the first two columns are columns of the matrix D and the third should contain either "paid" or "not paid". I have inserted the expected output. The second matrix I have inesrted the column mannualy. Please help.
D =
13 0
4 1
5 1
1 1
2 1
3 1
14 0
5 1
16 0
7 1
8 1
9 1
3 1
4 1
2 1
1 1
3 1
98 0
100 0
what i expect is;
D =
13 0 Notpaid
4 1 paid
5 1 paid
1 1 paid
2 1 paid
3 1 paid
14 0 Notpaid
5 1 paid
16 0 Notpaid
7 1 paid
8 1 paid
9 1 paid
3 1 paid
4 1 paid
2 1 paid
1 1 paid
3 1 paid
98 0 Notpaid
100 0 Notpaid
댓글 수: 0
채택된 답변
dpb
2023년 4월 26일
편집: dpb
2023년 4월 26일
Holding disparate data types would be a good place to use a table as alternative to the cell array...
D = [randi(100,10,1),rand(10,1)>=0.5];
tD=array2table(D,'VariableNames',{'Amount','PayStatus'}); % convert to table
CODE=categorical({'Notpaid';'Paid'}); % the lookup values
tD=addvars(tD,CODE(tD.PayStatus+1),'NewVariableNames',{'BillStatus'}) % add the verbal status
댓글 수: 0
추가 답변 (2개)
chicken vector
2023년 4월 26일
You can't concatenate doubles and string in one array, because the array can be only one of them.
If you want to only store the information you can use cells:
D = [randi(100,20,1),rand(20,1)>=0.5];
result = cell(2,1);
result{1} = D;
result{2} = strings(length(D),1);
for j = 1 : length(D)
if ~D(j,2)
result{2}(j) = "Notpaid";
else
result{2}(j) = "Paid";
end
end
If it's for display purposes you can transform everything into a string:
D = [randi(100,20,1),rand(20,1)>=0.5];
result = strings(length(D),3);
result(:,1:2) = string(D);
for j = 1 : length(D)
if ~D(j,2)
result(j,3) = "Notpaid";
else
result(j,3) = "Paid";
end
end
댓글 수: 4
dpb
2023년 4월 26일
I don't know that it's "much" better, but does illustrate using the lookup table approach that many novices may have not seen...it trades one temporary variable for another so isn't a tremendous advantage one way or another other than, perhaps, putting the constants into one array so can just adjust it if number of choices changes.
Dyuman Joshi
2023년 4월 26일
편집: Dyuman Joshi
2023년 4월 26일
Given the format of your final output, you will either have to use string arrays, cell arrays or categorical arrays.
%Categorical array method
D =[13 0
4 1
5 1
1 1
2 1
3 1
14 0
5 1
16 0
7 1
8 1
9 1
3 1
4 1
2 1
1 1
3 1
98 0
100 0];
%Values corresponding to paid
idx = D(:,2);
%Convert D to a categorical array
D = categorical(D);
str = categorical(["Notpaid", "paid"]);
D(:,3) = str(idx+1)
댓글 수: 1
참고 항목
카테고리
Help Center 및 File Exchange에서 Partial Differential Equation Toolbox에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!