how to creating matrix h 4x2 with some rules
2 次查看(过去 30 天)
显示 更早的评论
I have some trouble when creating matrix 4x2 with rules like below. the first column are integer and the other column are random number. I already create the syntax below.
for ii = 1:8,
nilai = mod(ii,2);
if nilai == 0
x(ii) = 0.95 + (1.05-0.95)*x(ii);
elseif nilai ~= 0
x(ii) = round(3 + (30-3)*x(ii));
elseif nilai ~= 0
x(ii) = 0.01 + (0.055-0.01)*x(ii);
else
x(ii) = 1.0 + (1.15-1.0)*x(ii);
end
end
x = reshape(x,4,2)';
but the result are
??? Error using ==> reshape
To RESHAPE the number of elements must not change.
anyone can help me with this problem..? any solutions are very welcome..
thank you.
0 个评论
采纳的回答
the cyclist
2013-3-21
What is the shape of x before you start? It seems that it is probably not an 8-element array, so the reshape fails.
3 个评论
the cyclist
2013-3-21
You did not answer my question. What is the shape of x BEFORE this loop?
As you can see from Image Analyst's answer, there is no problem if x is 1x8 before your loop.
更多回答(1 个)
Image Analyst
2013-3-21
I got a different error message due to x not being predefined and your new x(ii) depends on your old x(ii). When I predefined x, it ran with no errors:
x = zeros(1, 8);
for ii = 1:8
nilai = mod(ii,2);
if nilai == 0
x(ii) = 0.95 + (1.05-0.95)*x(ii);
elseif nilai ~= 0
x(ii) = round(3 + (30-3)*x(ii));
elseif nilai ~= 0
x(ii) = 0.01 + (0.055-0.01)*x(ii);
else
x(ii) = 1.0 + (1.15-1.0)*x(ii);
end
end
x = reshape(x,4,2)'
In the command window:
x =
3 0.95 3 0.95
3 0.95 3 0.95
2 个评论
Image Analyst
2013-3-21
% make the value of the 3rd column like 2nd
x(:,3) = x(:,2);
% make the value of the 3rd column like 4th
x(:,3) = x(:,4);
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Lighting, Transparency, and Shading 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!