Skip to content

Commit 6a4821c

Browse files
committed
fix 2d array transpose issue, close #54
1 parent fb5b240 commit 6a4821c

File tree

3 files changed

+12
-30
lines changed

3 files changed

+12
-30
lines changed

jdatadecode.m

Lines changed: 9 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -101,64 +101,46 @@
101101
end
102102
else
103103
if(iscell(data(j).(N_('_ArrayData_'))))
104-
data(j).(N_('_ArrayData_'))=cell2mat(cellfun(@(x) double(x(:)),data(j).(N_('_ArrayData_')),'uniformoutput',0));
104+
data(j).(N_('_ArrayData_'))=cell2mat(cellfun(@(x) double(x(:)),data(j).(N_('_ArrayData_')),'uniformoutput',0)).';
105105
end
106106
ndata=cast(data(j).(N_('_ArrayData_')),data(j).(N_('_ArrayType_')));
107107
end
108108
iscpx=0;
109-
needtranspose=0;
110109
if(~isempty(strmatch(N_('_ArrayIsComplex_'),fn)))
111110
if(data(j).(N_('_ArrayIsComplex_')))
112111
iscpx=1;
113-
needtranspose=islogical(data(j).(N_('_ArrayIsComplex_')));
114112
end
115113
end
116114
if(~isempty(strmatch(N_('_ArrayIsSparse_'),fn)) && data(j).(N_('_ArrayIsSparse_')))
117115
if(islogical(data(j).(N_('_ArrayIsSparse_'))))
118-
needtranspose=1;
119116
end
120117
if(~isempty(strmatch(N_('_ArraySize_'),fn)))
121118
dim=double(data(j).(N_('_ArraySize_'))(:)');
122-
if(iscpx && size(ndata,2)==4-any(dim==1))
123-
ndata(:,end-1)=complex(ndata(:,end-1),ndata(:,end));
119+
if(iscpx)
120+
ndata(end-1,:)=complex(ndata(end-1,:),ndata(end,:));
124121
end
125122
if isempty(ndata)
126123
% All-zeros sparse
127124
ndata=sparse(dim(1),prod(dim(2:end)));
128125
elseif dim(1)==1
129126
% Sparse row vector
130-
if(size(ndata,2)~=2 && size(ndata,1)==2)
131-
ndata=ndata';
132-
end
133-
ndata=sparse(1,ndata(:,1),ndata(:,2),dim(1),prod(dim(2:end)));
127+
ndata=sparse(1,ndata(1,:),ndata(2,:),dim(1),prod(dim(2:end)));
134128
elseif dim(2)==1
135129
% Sparse column vector
136-
if(size(ndata,2)~=2 && size(ndata,1)==2)
137-
ndata=ndata';
138-
end
139-
ndata=sparse(ndata(:,1),1,ndata(:,2),dim(1),prod(dim(2:end)));
130+
ndata=sparse(ndata(1,:),1,ndata(2,:),dim(1),prod(dim(2:end)));
140131
else
141132
% Generic sparse array.
142-
if(size(ndata,2)~=3 && size(ndata,1)==3)
143-
ndata=ndata';
144-
end
145-
ndata=sparse(ndata(:,1),ndata(:,2),ndata(:,3),dim(1),prod(dim(2:end)));
133+
ndata=sparse(ndata(1,:),ndata(2,:),ndata(3,:),dim(1),prod(dim(2:end)));
146134
end
147135
else
148136
if(iscpx && size(ndata,2)==4)
149-
ndata(:,3)=complex(ndata(:,3),ndata(:,4));
137+
ndata(3,:)=complex(ndata(3,:),ndata(4,:));
150138
end
151-
ndata=sparse(ndata(:,1),ndata(:,2),ndata(:,3));
139+
ndata=sparse(ndata(1,:),ndata(2,:),ndata(3,:));
152140
end
153141
elseif(~isempty(strmatch(N_('_ArraySize_'),fn)))
154-
if(needtranspose)
155-
ndata=ndata';
156-
end
157142
if(iscpx)
158-
if(size(ndata,2)~=2 && size(ndata,1)==2)
159-
ndata=ndata';
160-
end
161-
ndata=complex(ndata(:,1),ndata(:,2));
143+
ndata=complex(ndata(1,:),ndata(2,:));
162144
end
163145
if(format>1.9)
164146
data(j).(N_('_ArraySize_'))=data(j).(N_('_ArraySize_'))(end:-1:1);

loadjson.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@
165165
[obj, nextidx]=parse2darray(inputstr,pos+rowstart,arraystr);
166166
if(nextidx>=length(arraystr)-1)
167167
object=obj;
168-
if(format>1.9 && ~isvector(object))
168+
if(format>1.9)
169169
object=object.';
170170
end
171171
pos=endpos;
@@ -513,7 +513,7 @@
513513
astr=regexprep(deblank(astr),'\s+,',',');
514514
[obj, count, errmsg, nextidx]=sscanf(astr,'%f,',inf);
515515
if(nextidx>=length(astr)-1)
516-
obj=reshape(obj,nextdim,numel(obj)/nextdim)';
516+
obj=reshape(obj,nextdim,numel(obj)/nextdim);
517517
nextidx=length(arraystr)+1;
518518
end
519519
end

loadmsgpack.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@
208208
if(true)
209209
try
210210
oldobj=out;
211-
out=cell2mat(out');
211+
out=cell2mat(out);
212212
if(iscell(oldobj) && isstruct(out) && numel(out)>1 && jsonopt('SimplifyCellArray',1,varargin{:})==0)
213213
out=oldobj;
214214
elseif(size(out,1)>1 && ismatrix(out))

0 commit comments

Comments
 (0)