AMcoder - javascript, python, java, html, php, sql

Matlab ֆունկցիան ձախողվում է «Eval-ի օգտագործման սխալի» պատճառով, այն լավ է աշխատում, երբ օգտագործվում է Command Window-ում:

.mat ֆայլից տվյալներ գծագրելիս, եթե ես սկրիպտից տողերը մեկ առ մեկ մուտքագրում եմ, լավ է աշխատում... բայց երբ փորձում եմ սկրիպտը գործարկել, ձախողվում է:

function Test (filename)  

   varname = load (filename)  %or load filename                                                     
   matObj = matfile(filename);
   varlist = who (matObj);   %or varlist = fieldnames (varname)  
   field1 = eval ( varlist {1} )
   field2 = eval ( varlist {2} )
   x1 = field1.x_values.start_value:field1.x_values.increment:field1.x_values.increment*field1.x_values.number_of_values;
   x2 = field2.x_values.start_value:field2.x_values.increment:field2.x_values.increment*field2.x_values.number_of_values;
   figure
   hold all

   %Support for yyaxis left/right not avaiable, so use plotyy
   plotyy (x1, field1.y_values.values, x2, field2.y_values.values)

end

Երբ ես կանչում եմ սցենարը (Test ('1.mat')), Matlab-ը սխալ է ցույց տալիս դաշտում1 = տող :

  Error using eval
  Undefined function or variable 'Signal'.  

«Ազդանշանը» 1.mat ֆայլի տվյալների հավաքածուի անուններից մեկն է:

Հետաքրքիր է, որ երբ ես հրամանի պատուհանից յուրաքանչյուր տող ինքնուրույն գործարկում եմ նույն հերթականությամբ, ես ոչ մի սխալ չեմ ստանում, և սյուժեն ցուցադրվում է: Ես ստուգեցի, որ ընթացիկ ուղին ունի սկրիպտը և 1.mat ֆայլը, բայց չեմ կարող հասկանալ, թե ինչու է այն բողոքում eval-ից, երբ գործարկվում է սցենարից:

25.05.2016

Պատասխանները:


1

Խնդիրն այն է, որ ձեր matObj*.mat ֆայլ է, որը պարունակում է Signal անունով փոփոխականը: Դուք երբեք ֆայլը չեք բեռնում ձեր ֆունկցիայի մեջ (օգտագործելով load), փոխարենը նշանակում եք matfile օբյեկտ: մինչև matObj: Այս փոփոխական կարդալու համար մի օգտագործեք eval (երբևէ), այլ պարզապես ուզում եք օգտագործել դինամիկ դաշտերի հղում matfile օբյեկտ:

field1 = matObj.(varlist{1});
field2 = matObj.(varlist{2});

Այնուամենայնիվ, ընդհանուր առմամբ, դուք հավանաբար պետք է իմանաք այն փոփոխականների անունը, որոնք փորձում եք բեռնել ֆայլից, այլ ոչ թե պարզապես օգտագործելու առաջին երկու փոփոխականները, որոնք գտնում եք who-ով: Եթե ​​դա այդպես է, պարզապես օգտագործեք դրանք ուղղակիորեն:

field1 = matObj.Signal;

Պատճառը, որ ձեր կոդը հավանաբար աշխատել է հրամանի պատուհանում, այն է, որ ինչ-որ պահի դուք հավանաբար բեռնել եք .mat ֆայլը հրամանի պատուհանի աշխատանքային տարածք՝ օգտագործելով load-ը, որը կբեռներ դրա ողջ բովանդակությունը (ներառյալ Signal) աշխատանքային տարածք:

load('filename.mat')

Նաեւ որպես մի քիչ nit-pick. Դուք չունեք սցենար, դուք ունեք գործառույթ (վերևում ունեք function սահմանում): Սա հսկայական հետևանքներ ունի ձեր խնդրի ախտորոշման համար: Դուք չի կարող փորձարկել ֆունկցիան՝ պատճենելով/կպցնելով նյութեր հրամանի պատուհանում՝ ֆունկցիայի տարբեր շրջանակի պատճառով:

25.05.2016
  • Շնորհակալություն, դա էր: Գործառույթներն ընդդեմ սկրիպտների մի փոքր շփոթեցնող են... ինքնուրույն exe ստեղծելու համար ես միշտ վերին մակարդակի .m ֆայլը դնում եմ ֆունկցիա պարունակող ֆայլի վրա: Այնուհետև պատուհանի հրամանի տողից ես կարող եմ գործարկել .exe-ն և փոխանցել այն ֆունկցիային անհրաժեշտ ցանկացած արգումենտ: Հնարավո՞ր է արդյոք նույն բանն իրականացնել՝ օգտագործելով սկրիպտը որպես վերին մակարդակի .m ֆայլ: Ինչպե՞ս կփոխանցվեն փաստարկները: 25.05.2016
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..