How to efficiently Assign Value to column vector?

Dear Coder, Any idea how to remove the two for loop to assign multiple value to a column vector? Really appreciate for the help.
The patients.mat is build-in mat file in MATLAB 2017
load patients
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[tf,Ioc_Alert_LessThree] = find (ismember(Smoker, 1));
for i = 1: length (tf)
M (i,1) = Height (tf(i));
end
[tgf,Ioc_Alert_two] = find (ismember(Smoker, 0));
for i = 1: length (Ioc_Alert_two)
M (i,2) = Height (tgf(i));
end
M(M == 0) = NaN;
NonSmoker(Ioc_Alert_two == 1) = 0;
Yes_Smoker(Ioc_Alert_LessThree == 1) = 1;
scatter ( M (1:34,1),Yes_Smoker)
hold on
scatter ( M (:,2),NonSmoker)

2 个评论

It would be easier for people to help you if you attached patients.mat. Then they could run your code.
patients.mat is build-in mat file in MATLAB 2017

请先登录,再进行评论。

 采纳的回答

balandong - your first for loop is
for i = 1: length (tf)
M (i,1) = Height (tf(i));
end
Try replacing this with
M = zeros(length(tf),1);
M(1:length(tf)) = Height(tf(1:length(tf)))
Something similar can be done for the second for loop too.

1 个评论

Thanks Geoff, Your suggestion is more compact, indeed.
The full code is as following.
load patients
[tf,Ioc_Alert_LessThree] = find (ismember(Smoker, 1));
[tgf,Ioc_Alert_two] = find (ismember(Smoker, 0));
M = zeros(length(tgf),2);
M(1:length(tf),1) = Height(tf(1:length(tf)));
M(1:length(tgf),2) = Height(tgf(1:length(tgf)));

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Logical 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by