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 件のコメント

Image Analyst
Image Analyst 2017 年 7 月 23 日
編集済み: Image Analyst 2017 年 7 月 23 日
It would be easier for people to help you if you attached patients.mat. Then they could run your code.
balandong
balandong 2017 年 7 月 23 日
patients.mat is build-in mat file in MATLAB 2017

サインインしてコメントする。

 採用された回答

Geoff Hayes
Geoff Hayes 2017 年 7 月 23 日

1 投票

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 件のコメント

balandong
balandong 2017 年 7 月 23 日
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 件)

カテゴリ

質問済み:

2017 年 7 月 23 日

コメント済み:

2017 年 7 月 23 日

Community Treasure Hunt

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

Start Hunting!

Translated by