【问题标题】:Incorrect dimension matrix维度矩阵不正确
【发布时间】:2014-10-17 04:26:51
【问题描述】:

当我运行这段代码时:

clc, clear all
%% loading data
% allowed data type xy.txt, where x is a letter (j) nad y is number (i)
for j=0:3
    switch j
        case 0
            variable='i';
        case 1
            variable='u';
        case 2
            variable='p';
        case 3
            variable='q';
    end
    for i=0:15
        name = strcat(variable, int2str(i), '.txt')
        fid=fopen(name,'r');
        data=textscan(fid,'%*s%*s%s%s%s%*s','HeaderLines',10,'CollectOutput',1);
        fclose(fid);
        data=strrep(data{1},',','.');
        data=cellfun(@str2num, data);
        m.(variable){i+1}=data; 
    end
end

%% calculations
phase1 = 1424;
phase2 = phase1*2;
phase3 = phase2*2;

% voltage
u_na=m.u{2}(1:phase1);
u_nb=m.u{2}(phase1+1:phase2);
u_nc=m.u{2}(phase2+1:end);

% *voltage harmonic

% current
i_na=m.i{2}(1:phase1);
i_nb=m.i{2}(phase1+1:phase2);
i_nc=m.i{2}(phase2+1:end);

i_ha(1:phase1)=0;
i_hb(1:phase1)=0;
i_hc(1:phase1)=0;

for k=1:15
    if k==2
        break;
    end
    i_ha = i_ha + m.i{k}(1:phase1);
    i_hb = i_hb + m.i{k}(phase1+1:phase2);
    i_hc = i_hc + m.i{k}(phase2:end); %this line cause error
end

循环中的最后一行,导致错误:

这是可变尺寸:

有人想过问题出在哪里吗?这些行:

i_ha = i_ha + m.i{k}(1:phase1);
i_hb = i_hb + m.i{k}(phase1+1:phase2);
i_hc = i_hc + m.i{k}(phase2:end);

看起来相同,但只是最后一个原因问题。我尝试将 end 更改为 phase1*3,但这没有帮助。

【问题讨论】:

    标签: matlab matrix vector dimensions


    【解决方案1】:
    i_hc = i_hc + m.i{k}(phase2+1:end); 
    

    我认为你在代码中犯了一个错误..只需相应地更改它..

    【讨论】:

    • 是的,这是一个简单的错误,但是当我改变它时,我收到了同样的问题:for k=1:15 p_a = p_a + m.p{k}(1:phase1); p_b = p_b + m.p{k}(phase1+1:phase2); p_c = p_c + m.p{k}(phase2+1:end); end
    • 为什么数据是 1425x3 而 i_hc = 1424x1?为什么有区别?
    • 你能检查一下m.i{k}(phase2+1:end)中有多少元素吗?是 1425 还是 1424?
    • 为此:p_a = p_a + m.p{k}(1:phase1+1); p_b = p_b + m.p{k}(phase1+1:phase2+1); p_c = p_c + m.p{k}(phase2+1:end); 1x1425、1x1425、1x1424。