how to use certain values to write a for loop?
9 ビュー (過去 30 日間)
古いコメントを表示
X = [67;89;78;56;55;75;99];
f = [4;5];
for i = 1:length(X);
if i == f;
X1(i,1) = 5*X(i,1);
else
X1(i,1) = X(i,1);
end
end
I know that the way i have written the if expression is wrong but can someone tell how do I write the if expression such that it uses the values of f.. basically if i equals the value in the f matrix or array the first formula is used else the second.
Thanks for help.
Sid
2 件のコメント
採用された回答
Arnab Sen
2016 年 2 月 25 日
Hi Siddharth,
My understanding from your problem statement that you want to check whether the values of the variable 'i' is present in the vector 'f' in the if-statement. You can use in-built 'find' function for this purpose. 'find' function returns the indices of the vector which meet certain condition. If no match then it returns a empty vector. So you can write the if statement in the following way:
>>if(~isempty(f==i))
So, the whole script as below:
if true
% code
end
X = [67;89;78;56;55;75;99];
f = [4;5];
for i = 1:length(X);
%if i == f
if(~isempty(find(f==i)))
X1(i,1) = 5*X(i,1);
else
X1(i,1) = 1*X(i,1);
end
end
For more detail about 'find', refer to the following link:
2 件のコメント
Jos (10584)
2016 年 2 月 25 日
Use the single command any(..) rather than the three commands ~empty(find(..))
any(f==i)
その他の回答 (1 件)
Walter Roberson
2016 年 2 月 25 日
編集済み: Stephen23
2016 年 2 月 25 日
ismember(i, f)
Or, you can use
X1 = X;
X1(f) = 5 * X(f);
with no loop.
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Loops and Conditional Statements についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!