how to generate new matrix with if statment

5 次查看(过去 30 天)
I have two matrices first one is:
test = [5;6;0;-1;0;5;0;6;0;8];
and the second one is:
test5 = [2;6;8;-1;0;7;8;6;8;8];
how to generate third matrix which is the result after the condition (if statment)...
the condition is if the value of test is equal 0 then the value of the new matrix is 0 , else if the value of the first matrix isn't equal 0 do some calculations on the second matrix which is test5 like (test5*7+5).
so the third matrix values depends on the two matrix before...

采纳的回答

Stanislao Pinzón
Stanislao Pinzón 2020-5-17
Maybe like this?
test = [5;6;0;-1;0;5;0;6;0;8]+2;
test5 = [2;6;8;-1;0;7;8;6;8;8];
if ismember(0,test)
Matrix3 = 0;
else
Matrix3 = test5*7+5;
end
  7 个评论
Stanislao Pinzón
Stanislao Pinzón 2020-5-17
or instead
test = [5;6;0;-1;0;5;0;6;0;8];
test5 = [2;6;8;-1;0;7;8;6;8;8];
Matrix3 = test5*7+5;
a = find(test==0);
Matrix3(a) = 0;

请先登录,再进行评论。

更多回答(3 个)

Image Analyst
Image Analyst 2020-5-17
Try masking:
test = [5;6;0;-1;0;5;0;6;0;8];
test5 = [2;6;8;-1;0;7;8;6;8;8];
% Now multiply by 7 and add 5 only.
output = test5 * 7 + 5;
% Find indexes where test is zero.
mask = (test == 0)
% Erase where test was 0.
output(mask) = 0

Yundie Zhang
Yundie Zhang 2020-5-17
编辑:Walter Roberson 2020-5-17
test = [5;6;0;-1;0;5;0;6;0;8];
test5 = [2;6;8;-1;0;7;8;6;8;8];
if test ==0
newMAT = 0
elseif test ~=0
newMAT = (test5*7)+5
end
  2 个评论
Ibrahim AlZoubi
Ibrahim AlZoubi 2020-5-17
编辑:Ibrahim AlZoubi 2020-5-17
the result is:
Undefined function or variable 'newMAT'.
when I want to know the new matrix "newMAT"
Walter Roberson
Walter Roberson 2020-5-17
Remember that when you apply if or while to a non-scalar, that the result is only considered true if every item being tested is non-zero.
if test ==0
Only some of the items in test are 0, so that fails
elseif test ~=0
Only some of the items in test are non-zero, so that fails.

请先登录,再进行评论。


Walter Roberson
Walter Roberson 2020-5-17
Create the new matrix by applying the calculation to all of the entries in the second matrix, as if the rule about 0 was not present. This can be done in vectorized form in a single statement.
Now, everywhere that there is a 0 in the first matrix, replace the content of the third matrix with 0. This can be done in vectorized form in a single statement, using logical indexing.
  3 个评论
Stephen23
Stephen23 2020-5-17
"so you mean to edit the 3rd matrix manually ?"
No. Use logical indexing:
which could be generated very simply using ==.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Assessments, Criteria, and Verification 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by