w= 1 0 1
w= 0 1 1
w= 0 1 0
how came this can be written in straight line
w= 1 0 1 0 1 1 0 1 0

 采纳的回答

Walter Roberson
Walter Roberson 2011-4-24

0 个投票

You might find this easier to understand:
w = []; for i = 1:30 w = [w, A(i), B(i), C(i)]; end

2 个评论

Seriously :)?
Yup. Get it working first, and *then* optimize it.

请先登录,再进行评论。

更多回答(1 个)

Walter Roberson
Walter Roberson 2011-4-24

0 个投票

It cannot. The first one assigns the row vector [0 1 0] to w, but the second one assigns a row vector of length 9 to w.
If your original data is a 3 x 3 matrix instead, then
w = reshape(w.',1,numel(w));

7 个评论

not working
those 'w' are vectors
What *exactly* do you have for input? And what *exactly* do you want for output?
w = 1 0 1
is not valid MATLAB input.
for i=1:30;
w=([A(i),B(i),Q(i)]);
end
after perfoming this
i got out put as
w=
1 0 1
w=
0 0 1
w=
1 1 1
and so on.........................
now i need to make them into one single bit stream
like
w=1 0 1 0 0 1 1 1 1 .....................
Preallocate before the loop:
w = zeros(1,30*3);
for ...
w(i*3-2:i*3) = ([A(i),B(i),Q(i)]);
end
N = 30;
w = reshape([reshape(A(1:N),1,N); reshape(B(1:N),1,N); reshape(C(1:N),1,N)], 1, 3*N);
The above does not assume that A, B, or C are row vectors or column vectors. If the shapes are known and consistent, the code can be simplified -- especially if you are putting together _all_ of the vector instead of just a subset of it.
For example, if they are all row vectors and you are using all of them, then
w = [A;B;C]; w = w(:).';
thanks its working

请先登录,再进行评论。

类别

标签

Community Treasure Hunt

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

Start Hunting!

Translated by