Vectors must be the same length error
조회 수: 4 (최근 30일)
이전 댓글 표시
Hello everyone, im facing a problem that i cant solve it. Im new to MatLab and im having a , Vectors must be the same length, error. I dont know that well about grafics in matlab so if someone could help me it would be apreciated
heres my code
bny = input('Insira o codigo binario a codificar: ' ,'s');
idx = ismember(bny,'01');
assert(all(idx),'O codigo binario só pode conter 0s e 1s, mas contem o(s) número(s) %s',bny(~idx))
fprintf('O seu codigo é: %s\n',bny)
V = [-3,3];
n = V(bny-'/');
i=1;
a=0;
b=0.5;
t=0:0.01:length(bny);
for j=1:length(bny)
if t(j)>=a && t(j)<=b
y(j)=V(i);
elseif t(j)>b && t(j)<=i
y(j)=0;
else
i= i+1;
a=a+1;
b=b+1;
end
end
plot(t,y,'k');axis([0 length(bny) -5 5]);title('Rz Polar');
xlabel('time-->');
ylabel('Amplitude-->');
댓글 수: 6
채택된 답변
Adam Danz
2019년 1월 10일
편집: Adam Danz
2019년 1월 10일
After understanding the purpose of the code in the comments under the question, I rewrote the code to produce a plot that was described above. If this isn't what you were looking for or if you have specific quesitons about your original code, I'd be glad to help more.
%bny = input('Insira o codigo binario a codificar: ' ,'s');
bny = '100110';
bvec = bny-'0'; %convert to numerical vector
% create x,y values of step function
stepHeight = 3;
stepIdx = 0 : 0.5 : length(bvec)-0.5;
stepX = repelem(stepIdx, 2);
stepY = repmat([0, stepHeight, stepHeight, 0], 1, length(bvec));
% now we have a step function that's all positive
% figure
% plot(stepX, stepY, 'r-')
% ylim([-stepHeight, stepHeight]*2)
% flip sign of steps associated with bny=0
zeroIdx = repelem(bvec == 0, 4); %4 because there are 4 values in stepX/Y for each step
tallIdx = stepY > 0;
stepY(zeroIdx & tallIdx) = -1 * stepHeight;
% plot results
figure
plot([min(stepX), max(stepX)], [0,0], 'k-', 'LineWidth', 4) %reference line at y = 0
hold on
plot(stepX, stepY, 'r-', 'LineWidth', 3) %step function
ylim([-stepHeight, stepHeight]*2)
댓글 수: 4
추가 답변 (1개)
KSSV
2019년 1월 10일
YOu need to rethink on your code.
bny = input('Insira o codigo binario a codificar: ' ,'s');
idx = ismember(bny,'01');
assert(all(idx),'O codigo binario só pode conter 0s e 1s, mas contem o(s) número(s) %s',bny(~idx))
fprintf('O seu codigo é: %s\n',bny)
V = [-3,3];
n = V(bny-'/');
i=1;
a=0;
b=0.5;
% t=0:0.01:length(bny);
t = linspace(0,length(bny),length(bny)) ;
for j=1:length(bny)
if t(j)>=a && t(j)<=b
y(j)=V(i);
elseif t(j)>b && t(j)<=i
y(j)=0;
else
i= i+1;
a=a+1;
b=b+1;
end
end
plot(t,y,'k');axis([0 length(bny) -5 5]);title('Rz Polar');
xlabel('time-->');
ylabel('Amplitude-->');
참고 항목
카테고리
Help Center 및 File Exchange에서 Line Plots에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!