How to solve "Subscripted assignment dimension mismatch" error ?

조회 수: 2 (최근 30일)
nur aqila
nur aqila 2018년 4월 3일
댓글: nur aqila 2018년 4월 4일
Hi, I have 3 input which is 1 7 6 and the output supposed to be 00 for input 1, 110000 for input 7 and 1011 for input 6. my output supposed to be 001100001011 if it reads 1 7 6. But, this error "Subscripted assignment dimension mismatch" keeps appears. what should I do? please help me.Below are my coding
clear all
clc
i=1;
j=1;
p=1;
z=1;
input = [ 1 7 6 ];
for i=1:length(input)
if input(i) < 3 %level1
k = 1; %dec
h1 = 0 ;
h1(p) = dec2bin(h1,1);
t = input(i)-k ;
t1(z) = dec2bin(t,1);
huff(j) = [h1(p) t1(z)];
p=p+1
z=z+1
j=j+1;
elseif input(i) < 7 %level2
k = 3;
h1 = 2 ;
h1(p) = dec2bin(h1,2);
t = input(i)-k ;
t1(z) = dec2bin(t,2);
huff(j)= [h1(p) t1(z)];
p=p+1;
z=z+1;
j=j+1;
elseif input(i) < 15 %level3
k = 7;
h1 = 6 ;
h1(p) = dec2bin(h1,3);
t = input(i)-k ;
t1(z) = dec2bin(t,3);
huff(j) = [h1(p) t1(z)];
p=p+1;
z=z+1;
j=j+1;
end
end

답변 (1개)

Are Mjaavatten
Are Mjaavatten 2018년 4월 4일
dec2bin(n,m) returns the binary representation of n as a string of m characters, with leading '0'-s as needed. When you assign a number to the variable h1 (e,g, h1 = 2) you tell Matlab that h1 is an array of doubles. The element h1(p) can then only hold a single double. You then try to assign a string of two or more characters to this element, which results in an error.
I fail to see the logic in what you are trying to do, but I have modified your code to give the result you specify. Instead of using indices in the character array huff (e.g. huff(j)) I extend it by concatenating more characters at the end. Note that your variables p, z, and j all take the same value as i, so they are superfluous.
input = [ 1 7 6 ];
huff = [];
for i=1:length(input)
if input(i) < 3 %level1
k = 1; %dec
h1 = dec2bin(0,1);
t = input(i)-k ;
t1 = dec2bin(t,1);
elseif input(i) < 7 %level2
k = 3;
h1 = dec2bin(2,2);
t = input(i)-k ;
t1 = dec2bin(t,2);
elseif input(i) < 15 %level3
k = 7;
h1 = dec2bin(6,3);
t = input(i)-k ;
t1 = dec2bin(t,3);
end
huff = [huff h1 t1];
end
disp(huff)

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by