matlab 大于并且小于,Matlab:将大于(小于)1(-1)的元素转换为1(-1)的序列
更新:我做了一些測試,Jonas的解決方案對于一系列不同大小的輸入向量來說是最快的.特別是,正如angainor指出的那樣,解決方案可以很好地擴展到大尺寸 – 這是一個重要的測試,因為通常是大尺寸的問題促使我們在SO上提出這些問題.感謝Jonas和tmpearce的解決方案 – 基于大尺寸問題解決方案的效率,我給Jonas一個答案.
我的問題:我有這個列向量:
Vec = [0; 1; 2; -1; -3; 0; 0; 2; 1; -1];
我想將大于1的每個元素轉換為長度等于元素值的序列.同樣,我想將每個小于-1的元素轉換為減1的序列.因此我的輸出矢量應如下所示:
VecLong = [0; 1; 1; 1; -1; -1; -1; -1; 0; 0; 1; 1; 1; -1];
請注意,每個2已更改為兩個1,而-3已更改為三個-1.目前,我解決了這樣的問題:
VecTemp = Vec;
VecTemp(VecTemp == 0) = 1;
VecLong = NaN(sum(abs(VecTemp)), 1);
c = 1;
for n = 1:length(Vec)
if abs(Vec(n)) <= 1
VecLong(c) = Vec(n);
c = c + 1;
else
VecLong(c:c + abs(Vec(n))) = sign(Vec(n));
c = c + abs(Vec(n));
end
end
這感覺不是很優雅.有誰能建議更好的方法?注意:您可以假設Vec僅包含整數值.提前感謝所有建議.
總結
以上是生活随笔為你收集整理的matlab 大于并且小于,Matlab:将大于(小于)1(-1)的元素转换为1(-1)的序列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux镜像站arm(linux镜像站
- 下一篇: matlab 里try用法,matlab