Make a vector into a call of a function
显示 更早的评论
Hi, i would like to use bi2de for some elements of a vector A. If A(1)=0 A(2)=0 A(3)=1 and i call bi2de as bi2de(A(1:3)) i get the dec of each element A(1) A(2) and A(3). I would like to take the dec of bi2de([A(1) A(2) A(3)]). How can i create this vector for random number of elements in [ ] without creating the vector before for example using while-loop. thanks
采纳的回答
According to your definition
A(1)=0 A(2)=0 A(3)=1
then we get
A = [0,0,1]
which means we can simply call
bi2de(A)
Whatever method you use it will have to create a vector (or matrix) before these values are passed to bi2de.
7 个评论
sure, but A has length larger than 3. If A has size 1x12 i want to take first 3 values or 2 or 5, not all the vector, so i have to create a sub-vector every time with this way [A(1) A(2) ... A(something)]. I want a not hard coded method.
Then you can use basic MATLAB indexing, e.g. to use the first three elements of A:
N = 3;
bi2dec(A(1:N))
Or do you imagine something else? If so, please explain with examples of what you would like to have as input and outputs.
thanks for your responce. First i am using bi2de , second if i try bi2de(A(1:something)) and A has the values A(1)=0 A(2)=0 and A(3)=1 then i have as result a vector with 3 elements. The first element is 0 the second is 0 and the third is 1. That means that bi2de is running for each element of A(1:3) (think it as 3-loops) i want this to run one time such as call her for vector [A(1) A(2) A(3)]=[0 0 1]=4 (bi2de has msb the last (right element)) doing this one value is returned. Is it now clear?
No, it's really not clear. Note that
A(1:3)
is exactly the same as
[A(1) A(2) A(3)]
assuming A is a row vector.
If A is a column vector or matrix then,
A(1:3).'
is exactly the same
of course let me try to be more specific. I have a function bi2de (check help) i have a vector A size lets tell 12. if i write: -bi2de(A(1)) i will take 0 -bi2de(A(2)) i will take 0 -bi2de(A(3)) i will take 1
that is exactly the same as writing bi2de(A(1:3)) i will take a new vector that will be 0, 0, 1
I don't want this. I want to be give A(1) A(2) A(3) as one bin value the value 001. If i make it hard coded as temp=[A(1) A(2) A(3)] and write bi2de(temp) the function will return one time (one value) that it will be 4 (i explained the reason before). I want to create the vector temp not hard coded but automatically for random-but-known end_index value. for example temp=[A(1) A(2) A(3) ... A(end_index)] that can be 000100 and call bi2de for 00010 and take one returned value. Try to call bi2de it will help.
"-bi2de(A(1)) i will take 0 -bi2de(A(2)) i will take 0 -bi2de(A(3)) i will take 1, that is exactly the same as writing bi2de(A(1:3))"
Except that these are not the same same thing, if A is a row vector. Try it. Your confusion might be happening because you have a column vector for A: is A a column vector? What do you get if you call this?:
size(A)
The vector-orientation is very important, as will be clear when you read the documentation and try some examples:
>> bi2de([0,0,1])
ans =
4
>> bi2de([0;0;1])
ans =
0
0
1
"I want to be give A(1) A(2) A(3) as one bin value the value 001"
Which is exactly how bi2de treats a horizontal vector input, in which case you can use any of my suggested solutions. If your input vector A is a column vector, then the function bi2de will treat each row as a separate value to convert, as the documentation clearly states. You can simply transpose the input vector to turn it into a horizontal vector if you want it considered as one value:
>> A = randi([0,1],12,1)
A =
0
0
1
1
0
0
0
1
1
1
0
1
>> bi2de(A(1:3)) % each row as separate value
ans =
0
0
1
>> bi2de(A(1:3).') % transposed into row vector
ans =
4
it is working thanks. i forgot basic things
更多回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
