|
1234567891011121314151617181920212223242526272829303132333435 |
- function [dataWithAtt, totalAttNum] = CombineDataWithAttributes(data, attributes, attUpperRange, attWeight)
-
- totalAttNum = sum(attUpperRange);
- sizeWithAtt = totalAttNum + size(data,1);
- dataWithAtt = zeros(sizeWithAtt, sizeWithAtt);
- dataWithAtt(totalAttNum+1:end,totalAttNum+1:end) = data;
-
- numAttTypes = size(attUpperRange,2);
- attOffsets = zeros(numAttTypes);
- nodeOffset = totalAttNum;
-
- if (numAttTypes>1)
- for i=2:numAttTypes
- attOffsets(i) = attOffsets(i-1)+attUpperRange(i-1);
- end
- end
-
- dataLines = size(data,1);
- attLines = size(attributes,1);
- if (attLines ~= dataLines)
- fprintf('CombineDataWithAttributes - Invalid data sizes: data %d, attributes %d\n',dataLines,attLines);
- end
-
- for line=1:dataLines
- for att=1:numAttTypes
- value = attributes(line,att);
- if value > 0
- dataWithAtt(nodeOffset+line,attOffsets(att)+value)=attWeight;
- dataWithAtt(attOffsets(att)+value,nodeOffset+line)=attWeight;
- end
- end
- end
-
- dataWithAtt = sparse(dataWithAtt);
-
|